2012-10-17 39 views
0

我試圖繞過這些鏈接錯誤:LNK2001錯誤的basic_istream,basic_ostream

error LNK2001: unresolved external symbol "__declspec(dllimport) public void __thiscall std::basic_ostream(char,struc std::char_traits<char>>::_0sfx(void)" 

我使用的Visual Studio C++ 2010,並使用Visual Studio C++ 6.0試過,但還是同樣的錯誤出現。

目標文件被找到,所以我懷疑它找不到std庫的實現?我試過幾個庫(libc.lib,libcmt.lib,msvcrt.lib等)上的/ nodefaultlib選項,但根本沒有改善這種情況。

有人可以解釋爲什麼發生錯誤,我應該看看?

嘗試了其他類似問題中提出的解決方案,但它們要麼不適用,要麼不解決問題。

謝謝

回答

0

您應該刪除/ nodefaultlib選項。

+0

嗨,已經嘗試過。錯誤仍然存​​在。 – oalah

0

如果您的某些庫在靜態鏈接而其他動態鏈接時出現此問題。

基本上,如果你有與CRT靜態版本編譯的代碼都(這是編譯器開關/MT/MTd)和CRT動版(開關/MD/MDd)。 您可以在Project Properies - c++ - Code Generaion - Runtime Library中看到您的項目使用的是什麼)

確保您的所有庫都使用與項目相同的開關進行編譯。

+0

感謝@tozka,但現在我無法訪問庫的源代碼。我使用/ MD開關編譯附加代碼。將嘗試重新編譯/ MDd(沒有意識到它可能是原因),並讓你知道它是否工作。此外,它不是一個Visual Studio項目,我獲得了一堆第三方庫,我只需要以頭文件和.lib和.dlls的形式使用 – oalah

+0

至少您可以確保所有庫都是靜態或全部是DLL。 – tozka

+0

我有靜態和dll。試了編譯開關。沒有解決問題。 – oalah