dll是Windows上的动态库文件,常常将需要使用的函数封装在dll文件中,因此dll文件是不存在main入口的,把它想成函数就行,其内容并不神秘。
只是使用的时候需要对dll文件进行加载,加载dll文件后就可以使用里面封装好的函数了。
c++里面调用很简单,Windows封装好了,只需要#include<Windows.h>就可以直接使用,而要想使用Python调用需要使用ctypes库。
这个测试的dll文件是只定义了一个函数add,定义了一个加法运算:
可以看到有一个add函数被暴露出来了
下面使用Python测试一下效果:
from ctypes import cdll
_dll = cdll.LoadLibrary("./dllTest.dll")
res = _dll.add(3,2)
print(res)
运行效果:
c++调用:
#include <iostream>
#include<Windows.h>
int main()
{
HMODULE module= LoadLibrary(L"dllTest.dll");
if (module == NULL)
{
return 0;
}
typedef int(*AddFunc)(int, int);
AddFunc add;
add = (AddFunc)GetProcAddress(module, "add");
int re = add(2,5);
std::cout << re <<std::endl;
return 0;
}
运行结果: