- 首先通过vs2017制作动态链接库project1.dll
打开vs–>file–>new–>project–>installed–>Visual c++ -->Window Desktop–>Window Desktop Wizard(windows桌面向导)
然后点击ok,就会生成相应的空项目。
在Header Files中创建一个test.h的头文件,并在Resource Files中创建一个test.cpp
//test.h
#pragma once
extern "C" __declspec(dllexport) int add(int, int);//如果你的代码是纯c风格的话,可以不用加extern "C"
//test.cpp
#include"test.h"
#include<stdio.h>
#include<iostream>
int add(int a, int b) {
printf("hello python call dll\n");
std::cout << "hello world" << std::endl;
return a + b;
}
然后进行生成,注意:如果你的python是64位,那么你的vs生成时应该选择x64,位数应该一致
然后将生成的.dll文件拷贝到你的python项目中,或者使用绝对路径进行访问,这个随你。
我是用拷贝到python项目下:
这个是我的机器生成的文件:
python使用dll动态库使用的是ctypes模块,所以需要进行导入,然后加载相应的dll文件
# test.py
import ctypes
test = ctypes.cdll.LoadLibrary("./Project1.dll")
print(test.add(12,32))
"""
执行结果:
hello python call dll
hello world
44
"""
其中test接受动态库加载返回的句柄,通过它来进行访问dll中的函数。