C++ VisualStudio尝试针对静态库的嵌套库依赖项进行链接

C++ VisualStudio尝试针对静态库的嵌套库依赖项进行链接,c++,visual-studio,C++,Visual Studio,我有一个可执行的项目Game.exe,它链接到一个library Engine.lib。我想将另一个内部库Video.lib链接到Engine.lib,这样Game.exe就可以简单地链接Engine.lib,而不用担心Video.lib提供的符号。这种链接设置对我当前的解决方案最有意义 在Engine.lib的Library选项卡中,我在输入部分包括了Video.lib的路径以及文件“Video.lib”。这非常有效,我可以访问Video.lib符号 我的问题是当尝试从Game.exe链接到E

我有一个可执行的项目Game.exe,它链接到一个library Engine.lib。我想将另一个内部库Video.lib链接到Engine.lib,这样Game.exe就可以简单地链接Engine.lib,而不用担心Video.lib提供的符号。这种链接设置对我当前的解决方案最有意义

在Engine.lib的Library选项卡中,我在输入部分包括了Video.lib的路径以及文件“Video.lib”。这非常有效,我可以访问Video.lib符号

我的问题是当尝试从Game.exe链接到Engine.lib时。我不确定我是否更改了Game.exe项目中的某种设置,但当我尝试构建Game.exe时,出现了一个链接错误,无法找到Video.lib。当我在Game.exe的输入下没有“Video.lib”时,这怎么可能呢

将Video.lib文件的路径(简单地说是路径,而不是文件本身)添加到Game.exe项目可以解决这一问题,但显然,此设置的整个要点是Video.lib应该合并到Engine.lib中,这样我只需将Game.exe与Engine.lib链接

Engine.lib中是否有我必须设置的设置,指定所有Video.lib符号都应该拉入Engine.lib,而不是使其成为链接到Engine.lib的未来项目的依赖项?或者我在Game.exe项目中设置了错误的内容

我不想使用VisualStudio的“项目依赖项”或“引用”系统

谢谢

编辑:这里的这篇文章()没有回答我的问题,因为它既过时了(不包含关于新VS界面的信息),也没有回答我遇到的问题(为什么Game.exe试图链接到Video.lib)。由于我的问题是关于这个问题,而另一个问题只是一个“如何”,因此我不认为我的问题是重复的


编辑2:由于文件大小明显增加,我确信Video.lib正在链接到Engine.lib。我不明白的是为什么Game.exe仍然抱怨找不到Video.lib

问题出在我专门使用的库wxWidgets上(为了避免复杂化,我简化了上面的示例)

wxWidgets使用#pragma注释链接中的特定库。在本例中,wxWidgets(“Video.lib”)导致Game.exe“查看”这些pragma注释,并最终尝试在库中链接


将所有wxWidgets库(“Video.lib”)添加到Linker->Input in Game.exe下的“忽略特定的默认库”中,解决了我的问题,因为这最终覆盖了pragma指令。

这是100%重复,请注意,John Knoler的第二个答案是在VS中加入libs的解决方案。即使它已经很旧了,它仍然可以正常工作。链接器工具是相当保守的。线程建议勾选“链接库依赖项”可以为您做到这一点,但我在使用它时遇到了问题。我请求帮助,因为这个解决方案对我不起作用。你检查过Engine.lib包含Video.lib吗?如果是这样的话,那么Game.exe根本不应该链接Video.lib。是的,它是这样的。我已经设置了一个非常简单的解决方案来测试所有这些,但仍然会遇到同样的问题,即我一定是做错了什么。Engine.lib包含一个函数,该函数依次调用Video.lib函数。有关我的问题@user7860670的更多详细信息,请参见我的第二次编辑。也许这是一种简单的打字错误:例如,Game.exe仍然链接Video.lib,因为您为错误的平台/配置编辑了属性页。wxWidgets是否有宏用于禁用
#pragma注释…
类似于
BOOST\u ALL\u NO\u lib
的块?很遗憾,我找不到它