2014-07-25 53 views
3

因此,使用標準的cpp編譯器,我的應用程序鏈接到.lib文件,然後在運行時,只要dll與可執行文件在同一個文件夾中,作品..在python中使用cpp項目的dll&.lib文件

但在python中,.lib文件的作用是什麼?我知道你可以使用ctypes使用DLL的功能

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

但是,不使用.lib文件會丟失什麼?如果不需要,爲什麼它在cpp項目中是必需的?

回答

1

如果在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在這裏沒有任何作用。