将c/c++编写的程序编译成动态链接库(dll)文件,将得到的.dll文件放到py文件目录下便于直接调用,然后编写py文件进行调用
from ctypes import *
dll = CDLL('./dll1.dll')
a = dll.get_id()
print(a) #10
b = dll.add(1,2)
print(b)#3
这里就测试了2个简单的函数,运行结果也是正确的。
还有其他方法引入dll文件,dll = ctypes.windll.LoadLibrary( 'test.dll' ) dll = ctypes.WinDll( 'test.dll' ),但是使用了之后出现ValueError: Procedure probably called with too many arguments (8 bytes in excess)的错误,所以改为上面的代码。
以下是c语言的代码
simple.h
#ifndef SIMPLE_H_INCLUDED
#define SIMPLE_H_INCLUDED
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
int DLL_EXPORT get_id(void);
int DLL_EXPORT add(int,int);
#endif // SIMPLE_H_INCLUDED
simple.c
#include "simple.h"
int DLL_EXPORT get_id(void)
{
return 10;
}
int DLL_EXPORT add(int x,int y)
{
return x+y;
}
里面的内容也很简单,不用做太多介绍了。
创建方法dll方法:
环境准备:1,gcc g++来编译运行c/c++程序
2,codeclocks的下载和安装
创建过程:进入codeblocks,选择File-new-project-Dynamic Link Library,选择go,然后next,输入Project title(自己取),点击next-finish,就会在左边显示出刚刚创建的项目sources中存放的是c/c++文件,Headers目录存放着.h文件,里面声明函数导出为dll文件,在.c/.c++文件中是具体的功能实现,编写好了程序保存之后,直接按F9运行(图标菜单栏第14个,菜单栏build下的第四个选项),执行成功了之后,会在项目的电脑目录下生成xxx/bin/debug/xxx.dll文件,到此生成dll文件过程完成了。
这篇文章就介绍到这里了,c/c++在执行效率上要高很多,可以把需要高效的算法问题写好,python里面直接调用就行。