7

我尝试在发布模式下在 Visuas C++ 10 中构建我的多项目应用程序。
我收到下一个链接错误:
2> 所有输出都是最新的。 2>PidAppLib.lib(ThreadWin32.obj) : error LNK2011: precompiled object not linked in; 图像可能无法运行
2>C:\infinite_memories_svn\projects\sw\NewPidTools\PidWriter\Release\PidLabler.exe : 致命错误 LNK1120: 1 unresolved externals
2>
2>Build FAILED。

我怎么知道哪个对象未解决?
ThreadWin32.obj 是从 Internet 下载的外部库。

4

2 回答 2

6

好的。
我已经解决了这个问题。
我有 2 个库,比如说 a.lib 和 b.lib,以及项目,calib 使用 b.lib,所以在 a.lib 的库管理依赖项中我添加了 b.lib,c 使用 a.lib,所以我将它添加到依赖项中。
它在调试中工作,但在发布时我还应该将 b.lib 添加到 c 的依赖项中。奇怪但它解决了问题

于 2012-04-19T08:03:36.170 回答
3

我在重构的一个大型项目中遇到了这个错误。在重构过程中,我偶尔会编译单个源文件来检查我所做的更改,而无需构建整个项目。根据您的项目配置,这可能会导致 .obj 文件在与您构建项目时通常输出的目录不同的目录中输出。在我的情况下,手动编译的源文件的 .obj 文件在源代码目录而不是中间构建目录中输出。

这样做的一个副作用似乎是,在构建整个项目时,即使其他地方的其他更改意味着它们应该被重新编译(例如需要重新编译预编译头文件的更改),手动编译的源文件也可能不会被重新编译。

我的解决方案是手动删除通过手动编译单个源文件生成的所有 .obj 文件。根据项目配置,对项目执行 Clean 也可能有效。

于 2015-08-20T13:29:35.147 回答