【问题标题】:When does the compiler need access to a library?编译器何时需要访问库?
【发布时间】:2012-07-08 07:40:32
【问题描述】:

假设我有 3 个项目:

  • 项目程序 -> 编译成可执行文件
    • 参考音频,Tweakbar
    • 其他依赖项:无
    • 其他库依赖项:无
  • 项目音频
    • fmod 的封装,编译成 .lib
    • 其他依赖项:fmodex_vc.lib
    • 其他库依赖项:$(SolutionDir)\libs\fmod\lib
  • 项目调整栏
    • AntTweakBar 的包装器,编译成 .lib
    • 其他依赖项:AntTweakBar.lib
    • 其他库依赖项:$(SolutionDir)libs\AntTweakBar\lib

现在,问题是我收到以下编译错误:

致命错误 LNK1104:无法打开文件“AntTweakBar.lib”

可以通过将该lib文件的路径放在“程序”的项目设置中来解决此错误

我想知道的是为什么我需要在那里有这个库的路径?没有这样的路径,fmod 工作得很好。

【问题讨论】:

  • 没有名为“附加库依赖”的设置。如果您的意思是“目录”,不,这对链接程序没有影响。
  • @HansPassant Additional Library Dependencies 位于 Project properties -> Linker

标签: c++ visual-c++ compiler-construction linker


【解决方案1】:

因为只有在创建可执行文件时才需要这些库;此时,所有库都链接到可执行文件中。

显然,VisualStudio IDE 不会自动将其他库使用的库“提升”到实际应用程序,因此您必须手动执行此操作。

【讨论】:

  • 如果是这样,那为什么它对 FMOD 有效?我可以很好地播放音乐,而无需为“程序”项目提供 fmodex_vc.lib 的路径
  • 其实它不仅仅是 FMOD,我没有提供很多其他库的路径:SDL、freetype、freeimage、glu32、glew32 ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 2021-06-12
  • 2011-10-20
  • 2017-12-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多