项目参考和第三方库

时间:2012-07-25 20:28:31

标签: c++ visual-studio-2010 static-libraries

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

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

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

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

  1. 将第三方库添加到主项目的链接器设置
  2. 在我的解决方案中包含整个第三方库,并使用
  3. 进行编译

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

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

    EDIT2:我把-verbose选项用于链接,看起来第三方库的引用实际上仍然存在于Project2.lib中: / p>

             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似乎正在搜索所有这些库:/

1 个答案:

答案 0 :(得分:2)

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

项目1(主要)

Additional dependencies: Project2.lib

项目2

Additional dependencies: ThirdParty.lib

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

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