0

我在 VS2010 上有两个项目的解决方案。

主要项目引用并依赖于第二个,它是作为静态库构建的。第二个使用不是在解决方案中构建的静态第三方库,但仅在第二个项目的链接器设置中引用。

如果我尝试生成解决方案,VS失败并指示他没有找到第三方库。我不明白为什么,因为第二个项目的编译静态库足够大并且似乎“包含”了第 3 方库。

到目前为止,我只看到两个解决我的问题的方法,我宁愿避免:

  1. 将第 3 方库添加到主项目的链接器设置中
  2. 在我的解决方案中包含整个 3rd-party 库并使用

有没有其他方法可以解决这个问题?

编辑:编译主项目时出现问题,编译器输出:链接:致命错误LNK1104:无法打开文件'wxbase29u.lib'(我在第二个项目中使用wxWidget)

EDIT2:我将 -verbose 选项用于链接,似乎对第 3 方库的引用实际上仍然存在于 Project2.lib 中:

         Searching ..\MyAppConfig\Bin\Win32\Release\MyAppConfig.lib :
           "public: static void __cdecl ConfigWindow::Open(void)" (?Open@ConfigWindow@@SAXXZ) found
             Referenced in main.obj
             Loaded MyAppConfig.lib(configWindow.obj)
     /DEFAULTLIB:wxbase29u processed
     /DEFAULTLIB:wxbase29u_net processed
     /DEFAULTLIB:wxbase29u_xml processed
     /DEFAULTLIB:wxregexu processed
     /DEFAULTLIB:wxexpat processed
     /DEFAULTLIB:wxjpeg processed
     /DEFAULTLIB:wxpng processed
     /DEFAULTLIB:wxtiff processed
     /DEFAULTLIB:wxzlib processed
     ...
     ...
     LINK : fatal error LNK1104: cannot open file 'wxbase29u.lib'

有趣的是,我什至不使用 Project2 中的其他 wxWidgets 库,但 Visual Studio 似乎正在搜索所有这些库:/

4

1 回答 1

2

以下是你应该如何设置你的项目:

项目一(主要)

Additional dependencies: Project2.lib

项目 2

Additional dependencies: ThirdParty.lib

构建顺序:项目 2 -> 项目 1

如果您的项目是这样设置的并且它没有链接,那么它只是意味着您的库的路径没有正确设置(在“其他包含目录”下)。因此,只需确保您的项目附加依赖项设置正确,并且包含目录指向您需要的库所在的位置。

于 2012-07-25T20:38:20.183 回答