2012-10-17 40 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