因此,使用标准的cpp编译器,我的应用程序链接到.lib文件,然后在运行时,只要dll与可执行文件位于同一文件夹中,一切都神奇地起作用。
但是在python中,.lib文件的作用是什么?我知道你可以使用ctypes
来使用dll的功能from ctypes import*
dllHandle = cdll.LoadLibrary("C:\\filename.dll")
or
ctypes.WinDLL ("C:\\filename.dll")
但是没有使用.lib文件会丢失什么?如果不需要,为什么在cpp项目中有必要?
答案 0 :(得分: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在这里没有任何作用。