Visual c++ “忽略”;defaultlib"-特定.lib文件中的指令

Visual c++ “忽略”;defaultlib"-特定.lib文件中的指令,visual-c++,static-linking,Visual C++,Static Linking,我正在尝试构建一个Win32应用程序,它将使用第三方.lib。我发现错误“LIBC”没有找到(我使用Visual C++ 2010 Express),我已经跟踪这个引用到第三方库。添加“/NODEFAULTLIB”解决了对LIBC的引用,但反过来又提供了大量缺少的符号(当然)。 我知道LIBC是单线程的,可以引起各种各样的头痛,但现在我只是想找到一个成功的链接 致以最良好的祝愿, Soren它只是链接器的一个提示,注入了#pragma注释(lib,“libc.lib”)。/NODEFAULTLI

我正在尝试构建一个Win32应用程序,它将使用第三方.lib。我发现错误“LIBC”没有找到(我使用Visual C++ 2010 Express),我已经跟踪这个引用到第三方库。添加“/NODEFAULTLIB”解决了对LIBC的引用,但反过来又提供了大量缺少的符号(当然)。 我知道LIBC是单线程的,可以引起各种各样的头痛,但现在我只是想找到一个成功的链接

致以最良好的祝愿,
Soren

它只是链接器的一个提示,注入了#pragma注释(lib,“libc.lib”)。
/NODEFAULTLIB:libc.lib
链接器选项再次将其熄灭。如果现在出现链接器错误,那么实际上需要显式链接到libc.lib

这是不太可能有一个好的结局,该图书馆可以追溯到上个世纪。VS的现代版本使用libcmt.lib,不再有CRT的单线程版本。因此,如果这个libc.lib引用来自上个世纪编译的.lib或.obj,那么您就有一个更大的问题。编译器头文件已更改过多,无法继续工作

不发布链接器错误会妨碍获得更好的答案。

在那里,我修复了它

看来我不得不睁开眼睛去: 项目->属性->链接器->输入

我只需要在“忽略特定的默认库”中添加“libc”,而不是启用“忽略所有默认库”


这玩意儿甚至还能用(只是跑得很快)。当然,由于使用了标准C库的多线程版本,可能会有隐藏的错误,但到目前为止还不错

是的,我了解所有这些,问题是:我可以使用当前的C库来处理旧库吗?这是标准的C库,那么界面怎么会改变呢?汉斯,谢谢你的回答。我想也许我对旧自由主义的失望在我之前的评论中有所体现。我知道这个问题可能是不好的,但我有我的理由尝试让它链接起来……标准C库只兼容源代码,不兼容二进制代码。假设您总是可以从源代码重新编译。如果你做不到这一点,那么你的鼻子就会被链接器摩擦。同样,如果你拒绝发布你所看到的链接器错误,那么除此之外没有什么有用的。谢谢你,汉斯,正如我在自己的回答中所指出的,我真正要问的问题是:忽略对特定默认库的引用。感谢您抽出时间回答我的问题,祝您周末愉快!