C ++符号未找到

时间:2014-12-14 15:59:39

标签: c++ visual-c++

我正在尝试编译3个项目:

  • 静态库(.lib)
  • 使用静态库的.lib的动态库(.dll)。
  • 使用动态libaray的.dll的应用程序(.exe)

但是,在尝试编译.exe并设置断点时,我收到警告"断点当前不会被命中。此文档未加载任何符号。"
好吧,我知道Visual Studio以某种方式缺少.pdb文件。但是,我不明白为什么Visual Studio找不到它。

  • 正在生成静态库的.pdb文件,该文件与.lib位于同一文件夹中。
  • 动态库引用静态库的.lib和.pdb所在的文件夹。 .pdb文件是在为动态库创建.dll的同一文件夹中创建的。
  • 应用程序在编译到生成.exe的文件夹之前复制动态库的.dll和.pdb。

仍然,Visual Studio抱怨说它没有加载任何符号。在输出控制台中,它还告诉我它已经加载了.exe和.dll的符号,但没有加载.lib的符号。我有点失踪吗?

2 个答案:

答案 0 :(得分:0)

编译.exe时,你仍然应该链接到编译.dll时生成的.lib文件(所以我说的是动态库附带的.lib,而不是随附的.lib。)静态的)。

根据您的visual studio版本,您可以在此处配置: 项目 - >属性 - >配置属性 - >链接器>输入 - >附加依赖项

答案 1 :(得分:0)

什么版本的Visual Studio?所有项目都在同一个解决方案中吗?如果是这样,只需将库作为引用添加到DLL,并将DLL作为引用添加到EXE。然后,Visual Studio会处理所有内容,并且.exe​​,.dll和.pdb文件都应该位于解决方案输出目录中。

此外,如果您使用LoadLibrary加载DLL,调试器将无法加载调试信息,并且不知道在DLL加载之前在DLL中设置断点的位置,也可能导致你看到的错误。