1

我正在尝试构建一个 Win32 应用程序,该应用程序将使用第 3 方 .lib。我收到找不到“LIBC”的错误(我使用的是 Visual C++ 2010 express),并且我已经跟踪了对 3rd 方库的引用。添加“/NODEFAULTLIB”解决了对 LIBC 的引用,但反过来提供了过多的缺失符号(当然)。我知道 LIBC 是单线程的,并且会让人头疼,但现在我只是想获得一个成功的链接。

最好的问候,索伦

4

2 回答 2

2

这只是对链接器的提示,注入了#pragma comment(lib, "libc.lib")。/NODEFAULTLIB:libc.lib链接器选项再次将其熄灭。如果您现在遇到链接器错误,那么您实际上确实需要显式链接到 libc.lib。

否则不太可能有一个好的结局,该图书馆可以追溯到上个世纪。现代版本的 VS 使用 libcmt.lib,不再有 CRT 的单线程版本。因此,如果此 libc.lib 引用来自上个世纪编译的 .lib 或 .obj,那么您将遇到更大的问题。编译器头文件已经改变太多,仍然允许它工作。

不发布链接器错误会阻止更好的答案。

于 2012-04-20T10:24:26.523 回答
1

在那里,我修好了!

看来我只需要睁开眼睛,转到:Project->Properties->Linker->Input

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

这件事甚至可以工作(只是快速运行)。由于使用了标准 C 库的多线程版本,当然可能存在隐藏错误,但到目前为止还不错!

于 2012-04-20T10:55:21.707 回答