C++ 与LIB.EXE合并的库抛出链接:致命错误LNK1104:无法打开文件';PocoFoundationmt.lib';

C++ 与LIB.EXE合并的库抛出链接:致命错误LNK1104:无法打开文件';PocoFoundationmt.lib';,c++,c++11,visual-c++,cmake,static-libraries,C++,C++11,Visual C++,Cmake,Static Libraries,因此,我正在构建一个静态C++11 Windows库a.lib,它使用“PocoFoundationmt.lib”和一些其他第三方库,我不想让使用a.lib的测试应用程序(Z.exe)在linker命令中有一个所有库的长列表。因此,我想将所有第三方库合并到一个composite.lib中 A.lib的项目由cmake生成,CMakeLists.txt文件包含以下行: add_library(A STATIC ${SOURCES}) target_link_libraries(A PRIVATE

因此,我正在构建一个静态C++11 Windows库a.lib,它使用“PocoFoundationmt.lib”和一些其他第三方库,我不想让使用a.lib的测试应用程序(Z.exe)在linker命令中有一个所有库的长列表。因此,我想将所有第三方库合并到一个composite.lib中

A.lib的项目由cmake生成,CMakeLists.txt文件包含以下行:

add_library(A STATIC ${SOURCES})

target_link_libraries(A PRIVATE PocoFoundationmt.lib OtherStaticLibs.lib)
现在,在构建了A.lib之后,我执行lib.EXE以按照许多线程中的建议组合库:

例如

但是,当我将composite.lib链接到测试应用程序时,它总是抛出以下错误:

LINK : fatal error LNK1104: cannot open file 'PocoFoundationmt.lib'

许多线程建议以这种方式组合库。这是正确的方法还是我必须在我的测试应用程序(Z.exe)的链接器输入参数中提及所有库?

您应该将绝对路径传递到
target\u link\u libraries()
@drescherjm我正在使用/MACHINE:x86选项组合库。我所有的静态库也是32位的。另外,当我将PocoFoundationmt.lib与我的测试项目链接时,它工作正常,所以我知道它不是一个损坏的文件。只是如果我将PocoFoundationmt.lib和其他第三方库合并到一个库中,我就会看到这个问题。@arrowd我正在传递绝对路径。我写这篇文章只是作为一个例子。很抱歉。我发现问题是,
PocoFoundationmt.lib
仍在链接器库中进行测试。如果要使用组合库,需要将其从列表中删除。它是否列在测试的链接器/输入/附加依赖项中?如果不是,则可能在您的一个标题中有一个
#pragma注释(lib,PocoFoundationmt.lib)
。@drescherjm否,PocoFoundationmt.lib没有列在任何地方,也没有列在其他依赖项中,也没有任何地方有pragma注释。
LINK : fatal error LNK1104: cannot open file 'PocoFoundationmt.lib'