在Python中使用cpp项目的dll和.lib文件

4 投票
1 回答
706 浏览
提问于 2025-04-18 14:42

所以,使用标准的C++编译器时,我的应用程序会链接到一个.lib文件,然后在运行时,只要.dll文件和可执行文件在同一个文件夹里,一切就会神奇地正常工作。

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

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

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

1 个回答

2

如果在test.dll这个文件里有一个叫做void foo()的函数,而这个函数是从应用程序的main()里调用的。当你在构建应用程序时,如果链接了test.lib,链接器会处理这个调用,把它和导出的函数连接起来。
不过,还有另一种方法可以做到这一点,那就是在程序运行时加载test.dll,获取void foo()的函数地址,然后直接调用它(你可以参考这个链接)。这样就不需要链接test.lib。在Python中,你也在做类似的事情,test.lib在这里并没有什么作用。

撰写回答