在Python中使用C++项目的动态链接库和静态链接库文件

4

使用标准的cpp编译器,我的应用程序链接到.lib文件,在运行时只要dll与可执行文件在同一个文件夹中,一切就会自动完成。

但是在Python中,.lib文件扮演什么角色呢?我知道可以使用ctypes来使用dll的函数。

from ctypes import*   
dllHandle = cdll.LoadLibrary("C:\\filename.dll") 
or
ctypes.WinDLL ("C:\\filename.dll")

但是不使用.lib文件会失去什么?如果不需要它,为什么在cpp项目中它是必要的呢?

1个回答

2

如果 test.dll 中导出了 void foo() 函数,在应用程序的 main() 中调用此函数时,当您使用 test.lib 链接构建应用程序时,链接器会解析对这个导出函数的调用。 但是另一种实现方式是在运行时加载 test.dll,获取 void foo() 函数的地址并调用它(可以参考 http://msdn.microsoft.com/en-us/library/windows/desktop/ms683212%28v=vs.85%29.aspx)。这不需要任何与 test.lib 的链接。在 Python 中,您正在做类似的事情,而 test.lib 在此处不起任何作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接