分享

c语言python库安装 用c写python库

 羊玉wngbx 2024-03-11 发布于云南

这篇小结是2016年暑假在新疆出差阶段所写,因为项目需要所以研究了一下。

如有错误,欢迎互相交流。

 

不同编译器实现python调用C语言动态库方法小结

  • Windows平台下Visual Studio 2010编译器创建动态库,并调用

第一步:创建动态dll动态库

1打开visual studio,新建一个项目,选择Visual  C++创建一个Win32 控制台应用程序,命名为test5。

2点击确定,弹出应用程序设计向导,击下一步,选择DLL,空项目,再点击完成。

3用右键点击项目test5里面的源文件,添加新建项,选择【C++文件(.cpp)】,命名为test5.c。注意:名称后面一定要加C语言文件后缀名.c。亦可用*.cpp。

4在test5.c中编写将被Python调用的函数(将一个数组按从下到大排序):

#include <stdio.h>
__declspec(dllexport)             
void sort(int
{
int
"go \n");
for(i=0;i<10;i++)
    {
        k=i;
for(j=i+1;j<10;j++)
        {
if
                k=j;
            t=a[k];
            a[k]=a[i];
            a[i]=t;
        }}
"end \n");
}
///

注意:在visual studio 里面最好把所有的变量定义和说明放在函数开头,否则便会出现:【error C2143: 语法错误 : 缺少“;”(在“类型”的前面)】这类报错。这是因为纯C语言标准规定要求局部变量定义必须在函数或局部空间的开头,然后才能有其它语句。

同样的在编辑器codeblocks里面就可以不用管这些标准规定,可以很顺利地生成动态库文件。

5点击生成菜单下的生成解决方案(快捷键F7)。如果出现【error LNK1123:转换到COFF期间失败:文件无效或损坏】的报错,请将菜单栏中的【项目】→【属性】→【配置属性】→【清单工具】→【输入和输出】→【嵌入清单】:原来是“是”,改成“否”。

6在项目test5文件夹下的“Debug”目录下会生成test5.dll动态库文件。同时可以通过命令行方式运行下面命令:

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

也可以生成test5.dll动态库文件。

7如果想要生成release版的dll动态库文件,请选择菜单栏目【生成】→【配置管理器】,将项目test5的配置方式由“Debug”改为“Release”。最后点击【重新生成解决方案】,就可以在test5文件下的“Release”目录下找到relese版的dll动态库文件了。

 

第二步 Python 2.7调用test5.dll动态库

1将test5.dll文件拷贝到python环境变量所包含的目录里面。

2在python里面引用test.dll时,用ctypes模块里面的cdll子模块,而不是通常介绍的windll模块,具体原因暂时还不清楚。

c语言python库安装 用c写python库_c语言python库安装

 

 

  • Gcc编译器创建动态库.so

注意windows下需要先下载MinGW安装 包(包含gcc v4.7.1编译器),然后在环境变量PATH中加入gcc编译器的执行文件的路径。但是因为我的电脑里面装有codeblocks编辑器,里面自带了MinGW,所以直接下载codeblock也行。

1先编写C语言文件;

2打开cmd管理员窗口,进入源程序C文件的指定文件夹目录下面,运行下面命令:

gcc -o test.so -shared -fPIC test.c

此时生成test.so文件,同样将该文件拷贝到python环境变量所包含的目录里面;

3.so动态库的调用和上面介绍的.dll的调用方法一样,都是导入ctypes模块中的cdll子模块。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多