我打開了一箇舊的工作區,它是一個libray及其測試工具。它過去工作得很好,但現在沒有,老版本的代碼也不能使用相同的錯誤。我嘗試重新創建項目,並導致相同的錯誤。在項目設置中沒有任何東西出現亂碼,並且生成的代碼在主應用程序中可用。鏈接問題(VC6)
我已經剝去了大部分文件,並把它歸結爲最低限度生成錯誤。不幸的是,我不能發佈項目,因爲這是用於生產代碼。
LNK2001鏈接器錯誤我通常意味着我已經離開了一個庫或忘記實現一個虛擬功能。然而,這是標準模板庫的一部分,並且是一個標題。
被列爲具有IOCompletionPort.obj問題實際上不直接使用std::string
,但並調用的類,它的代碼:Comms::Exception
接受std::string
和GetLastError
或WSAGetLastError
值。
錯誤(GetMessage
)中提到的函數是實現的,但它是一個虛函數,所以其他類可以在需要時覆蓋它。然而,它似乎是編譯器使它成爲一個Ansi版本,但我無法找到設置中的任何選項來控制它。我懷疑這可能是問題,但由於圖書館的選擇方式很少,我無法確定。但是這兩個項目在編譯器選項中指定_MBCS。
--------------------配置:TestComms - Win32 Debug ------------------ - 鏈接... Comms.lib(IOCompletionPort.obj) :錯誤LNK2001:無法解析的外部符號「公共:虛擬類 std :: basic_string,類 std :: allocator> __thiscall Comms :: Exception :: GetMessageA void?const「(?GetMessageA @ Exception @ Comms @@ UBE?AV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ XZ) Debug/TestComms .exe:致命錯誤LNK1120:1個未解析的外部程序 執行link.exe時出錯。
TestComms.exe - 2個錯誤,0個警告
有什麼建議?我已經失去了大部分的時間,也不想在下午的大部分時間裏失去。