2016-06-09 158 views
1

我從託管C++調用非託管DLL。該DLL有多個本地依賴項。我正試圖通過Visual Studio進行編譯。如何從託管C++調用非託管DLL

我也做了以下內容:

  1. 添加包含的DLL和.LIB到屬性目錄 - > VC++目錄 - >圖書館目錄

  2. 添加的非託管的.lib Properties(屬性) - >輸入 - >附加依賴關係

但是,我得到了指向函數的鏈接錯誤。除了庫的頭文件外,我沒有將任何DLL或lib添加到項目中。

更新: 因此,它能夠找到.lib,因爲如果我在其他依賴項中給一個僞造的.lib文件,我會得到.lib找不到的編譯錯誤。我有的錯誤是「未解決的令牌....」。

+1

您需要在項目中指定lib文件。另外,在構建過程中不使用DLL,因此在您的描述中提及它們是沒有意義的。 DLL在運行時使用,而不是在構建時使用。 – PaulMcKenzie

+1

如果你想出來,請張貼解決方案,我最近一直在努力。我在另一個編譯器中編寫了一個非託管DLL,它在C#中使用PInvoke工作得很好,並且頭文件在託管C++中編譯得很好,但.lib不能正確鏈接,鏈接器正在尋找一些非常糟糕的醜陋clr-如果我只用VC++編寫DLL,那麼只有VC++似乎會產生這種名稱。我必須使用非VC++編譯器,VC++不是一個選項(不能遷移代碼),但我需要該DLL正確地在託管C++中工作。使用'.def'文件沒有幫助,或者我沒有得到正確的語法 –

+0

發佈鏈接器錯誤消息! –

回答

0

我建議你有一個很好的閱讀this。從C#調用DLL很簡單,因爲.NET支持它,託管的C++只是另一個.NET實現,並且應該也很簡單。