本文共 1017 字,大约阅读时间需要 3 分钟。
环境:VS2017 社区版, windows7 64位系统
一、检测c语言代码是否正常
打开vs2017,新建工程,新建源文件,测试代码正常如下:
#includeint add(int num1, int num2);void main(){ int a = 2; int b = 3; int c = 0; c = add(a, b); printf("%d", c); getchar();}int add(int num1, int num2){ return num1 + num2;}
通过调试运行,发现代码无错误。如果认为c语言代码无问题,这一步可有可无。生成dll文件时,不需要主函数。
二、生成dll文件
2.1新建动态链接库工程,如下图一。确定之后,自动生成dll导出文件,如下图二。
图一
图二
2.2 新建头文件及源文件
在头文件目录下添加新建项如下图三;在源文件目录下添加新建项如图四。代码块分别在所对应图示下面。
图三
#includeint add(int num1, int num2);
#include "stdafx.h"int add(int num1, int num2){ return num1 + num2;}
2.3新建模块定义文件
在源文件处添加新建项,选择模块定义文件,如图五。
代码块说明:test.dll 为其对应的工程名, add 为函数名。此代码块是为了让生成的dll文件能找到该函数。
LIBRARY "test.dll"EXPORTSadd
2.4生成dll文件
生成之前,如果系统是64位系统,需要选择x64,否则python调用时会报错。32位系统选择对应的x86即可。
点击生成,选择生成解决方案,成功之后,生成dll所在位置下面有提示。调用即可。
三、python调用dll文件
如下图,通过python的ctypes模块调用对应的add函数。
from ctypes import cdlla = cdll.LoadLibrary(r'dll所在路径')print(a.add(3, 6)) #输出值为9
四、其他
ubuntu生成.so文件,只需要用gcc命令将cpp文件直接就可以生成.so文件。
vs2013生成dll文件与该方法稍有不同,但代码块都是一样的。
转载地址:http://omsti.baihongyu.com/