`
westice
  • 浏览: 114382 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

gcc编译dll,python加载

阅读更多

   python开发效率高,实际项目时python搭建整个项目框架,关键模块用c编写,是个不错的办法!

   c函数对python的接口要按规则写。

   比如一个阶乘c函数的头文件定义:

   dll.h:

#ifndef LIB_H  
#define LIB_H  
extern "C" long __declspec(dllexport)factorial(int n);  //接口定义
#endif  

 

   dllmain.c:

 

#include "dll.h"  

long factorial(int n){
    if(n == 1)return 1;
    return n * factorial(n - 1);
}

   然后用gcc编译成dll文件。

         gcc -Wall -shared dllmain.c -o dllmain.dll

  或者 gcc --shared dllmain.c -o dllmain.dll

  刚开始gcc提示找不到cc1.exe,在dev-cpp mingw32中有个cc1plus.exe的文件,改成cc1.exe拷贝到gcc bin目录中即可。

  生成的dll就可以使用了。

from ctypes import *

#libtest=CDLL("dllmain.dll")
libtest=cdll.LoadLibrary("dllmain.dll")
print libtest.factorial(10)
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    能使用boost.python的MinGw(GCC)动态链接库

    为了方便大家使用MinGW(GCC)+_boost.python,特意只做了三个dll,可以很方便地将c++代码转为python模块. libboost_python-mgw45-1_49.dll libboost_python-mgw45-d-1_49.dll python27.dll 这三个文件我已放在资源...

    使用python脚本调用c代码实现wav音频的变语速不变音调。

    该工程使用python脚本调用c代码实现wav音频...1.gcc编译生成动态库speed_change.dll:gcc -o speed_change.dll -shared -fPIC runsonic.c sonic.c sonic.h。 2.使用python代码speedup.py调用speed_change.dll进行变速。

    liblto_plugin-0.dll

    在MinGW编译时报错缺少的一个文件,下载该文件后将其放在D:\MinGW\libexec\gcc\mingw32\9.2.0\目录下即可(该目录就是最初安装MinGW的目录

    VirtualBox 4.3.10在windows xp系统构建编译平台的支持工具

    本压缩包包含:MinGW(已整合官网的gcc-core-3.3.3、gcc-g++-3.3.3、mingw-runtime-3.8、w32api-3.5和binutils-2.13.90)、libcurl-7.36.0(curl-7.36.0)、SDL-1.2.15、Python27、zlib128-dll、gsoap-2.7、openssl-...

    Python在Windows和在Linux下调用动态链接库的教程

    2、编译c代码,最后生成Python可执行的.so文件 (1)gcc -c linuxany.c,将生成一个linuxany.o文件 (2)gcc -shared linuxany.c -o linuxany.so,将生成一个linuxany.so文件 3、在Python中调用

    python 调用C.pdf

     C代码编译为.so, //test.c #include ... python使用ctypes.CDLL调用.so import ctypes C_lib = ctypes.CDLL(“./test.so”) C_lib.test()  一般参数的传递  不需要修改的参数:类型匹配即可

    Python实现的调用C语言函数功能简单实例

    gcc a.c -fpic -shared -o lib.so 通过上面编译成so文件 利用ctypes模块。 from ctypes import cdll a=cdll.LoadLibrary(./lib.so) a.say() 能过上面代码测试通过。 更多关于Python相关内容感兴趣的读者可查看本...

    Python调用C语言程序方法解析

    首先我们需要将编写好的c程序文件编译为动态库文件(后缀名为.so) 使用下面的命令: gcc 原文件名.c -shared -o 新文件名.so 然后在python程序中导入模块:from ctypes import * 在python中引入c动态库,并定义一个...

    Simple-Notepad:用C和python编写的简单记事本

    更改main.py中的第四行,如CDLL(“ sys_file.dll的路径”)-示例:CDLL(C:/Users//Desktop/Simple-Notepad/sys_file.dll) 要启动程序:python main.py LINUX 使用python 32位 更改第四行,如Makefile中的gcc ...

    SCON工具源码

    SharedLibrary: 在 POSIX 系统上编译动态链接库,在 Windows 平台上编译 DLL。 这个简单的 SConstruct 的配置文件从一个侧面说明了使用 SCons 来建造程序是多么的简单。 在实际的项目开发中,程序的建造规则远比 ...

    python3利用ctypes传入一个字符串类型的列表方法

    c语言里:c_p.c #include void get_str_list(int n, char *b[2]) { printf("in c start");...gcc -o hello1.so -shared -fPIC c_p.c python里:p_c.py from ctypes import * ll = cdll.LoadLibrary lib = l

    Bit_FinalProject

    编译<gcc> 运行<./(파일경로)> Python,C파일 C파이썬에서썬에서리눅스에서는.a(정에서는이브러리)나.so(동적라이브러리)로한다。 gcc -c -fPIC test.c gcc -shared -fPIC -o test.so test.o from ...

    matlab灰度图像二值化代码-HandWritenDocsLineExtraction:HandWritenDocsLineExtracti

    matlab图形图像二值化代码设置 - 适用于 ...将编译的anigauss.dll存储在anigauss文件夹中 cd 到项目的根目录和pip install -r requirements.txt 执行: 要执行代码,您需要指定以下参数: --image_path -

    DeepBind:DeepBind模型的培训和测试

    DEEPBIND培训脚本 该源代码树是DeepBind的《自然生物技术》补充软件... 您需要Visual C ++ 2012来编译内部库:libs / smat / vcproj / smat.sln(打开并构建)libs / deepity / vcproj / deepity.sln(打开并构建)l

    mingw-w64-builds:Windows版本使用MinGW-w64(32位)的流行库

    很棒,但是它们没有Python软件包,并且软件包管理器不在Windows XP上运行,这使我担心其余的库。 为什么不交叉编译? 实际上,这是我第二次尝试构建供Windows使用的流行库。 最初的想法(效果很好)是在Linux上交

    LuaBind 源码 (Lua增强库)

    为了抑制LuaBind的编译时间最好是将其编译为一个库. 这意味着你要不编译并连接LuaBind 库要不就添加其所有源码到你的工程里面.你必须确保LuaBind目录在你的编译器包含目录中. LuaBind需要Boost 1.32.0 或者 1.33.0 ...

Global site tag (gtag.js) - Google Analytics