2012-11-08 83 views
1

我一直試圖鏈接到第三方DLL。我嘗試了3種不同的方式:在Cygwin中編譯C,在Visual Studio中編譯C++並在Visual Studio中編譯C#。每次我編譯的程序,我收到以下錯誤:在C/C中與DLL鏈接#

Cygwin的:未定義的引用「__imp__IEC61850_Create」

視覺S:LNK2019:解析外部符號「__imp__IEC61850_Create」

正如你可能已經聚集,我我試圖調用在DLL中找到的函數'IEC61850_Create',但它總是以'__imp__'前綴出現錯誤。由於DLL是第三方,我無法查看源代碼。在我搜索過的其他地方,人們通常會談論伴隨的.o或.lib文件。在這種情況下,我唯一的資源就是.dll。

有沒有其他人經歷過這樣的事情,或知道我如何鏈接到圖書館?如果需要,我可以提供示例代碼。

謝謝。

回答

1

您確實需要鏈接到.lib文件,因爲只有它有用於靜態鏈接的__imp__存根。

但是,您可以做的是創建一個.def文件並使用lib將其轉換爲.lib文件。

或者您可以創建一個空的功能虛擬項目,以創建一個.dll.lib文件,鏈接到.lib文件,但隨後使用真正的.dll與實際的程序。

欲瞭解更多信息,你可以閱讀微軟KB文章131313