2016-01-21 28 views
0

所以我想編譯一個使用PIN和Python的大項目。問題是PIN的某些類型與Python中的類型相同。鏈接自定義名稱空間失敗無法解析的外部符號

所以我做的是創建一個命名空間PIN::,以避免有ambiguous symbolerrors

所以,現在代碼編譯得很好,但鏈接器找不到PIN碼符號,因爲它試圖使用我自定義的PIN::名稱空間找到它們,而lib文件沒有它。

以下是錯誤:

1>main.obj : error LNK2001: unresolved external symbol "void __cdecl PIN::LEVEL_PINCLIENT::PIN_UnlockClient(void)" ([email protected][email protected]@@YAXXZ) 

我可以指定它需要搜索LEVEL_PINCLIENT::PIN_UnlockClient(void),而不是PIN::LEVEL_PINCLIENT::PIN_UnlockClient(void)鏈接?

乾杯

回答

1

一種方法來解決問題的鏈接是創建自己的DLL充當包裝對PIN和Python。

在PIN包裝DLL中,創建PIN名稱空間並在該namespace中添加包裝函數。與Python包裝器DLL一樣。

從其餘代碼中,使用namespace PINnamespace Python中的函數。

+0

嗨,這可能會工作,但有很多功能,我將需要「包裝」,如果我想這工作......沒有任何方式告訴鏈接器使用指定名稱時,它搜索函數庫中? – user1618465

+0

如果有兩個DLL具有相同的符號名稱,那麼如何告訴鏈接器使用一個DLL用於一個調用,而另一個DLL用於另一個調用? –

+0

好的,這裏是問題:有沒有什麼辦法告訴鏈接器在嘗試搜索lib中的函數時刪除'PIN ::'命名空間?謝謝! – user1618465

相關問題