Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio无法从主应用程序模块上使用的静态库加载符号_C++_Debugging_Visual Studio 2013_Static Libraries_Debug Symbols - Fatal编程技术网

C++ Visual Studio无法从主应用程序模块上使用的静态库加载符号

C++ Visual Studio无法从主应用程序模块上使用的静态库加载符号,c++,debugging,visual-studio-2013,static-libraries,debug-symbols,C++,Debugging,Visual Studio 2013,Static Libraries,Debug Symbols,我在模块M中使用了一个静态库L(也是一个静态库),并且该模块与主应用程序a链接。如果我调试主应用程序a,我将无法进入代码或看到库L的符号,因为Visual Studio不会加载其符号。(我正在使用VS 2013) 库L构建在另一台机器上,其本地路径类似于D:\thirdparty\L\。。。我可以在这台机器上很好地调试,看到符号并逐步进入代码,但不能在单独获取这个库的机器上进行调试。 图书馆必须建在一台单独的机器上 我的尝试(没有成功): 将L.pdb放在A.exe旁边 将Visual Stu

我在模块M中使用了一个静态库L(也是一个静态库),并且该模块与主应用程序a链接。如果我调试主应用程序a,我将无法进入代码或看到库L的符号,因为Visual Studio不会加载其符号。(我正在使用VS 2013)

库L构建在另一台机器上,其本地路径类似于D:\thirdparty\L\。。。我可以在这台机器上很好地调试,看到符号并逐步进入代码,但不能在单独获取这个库的机器上进行调试。 图书馆必须建在一台单独的机器上

我的尝试(没有成功):

  • 将L.pdb放在A.exe旁边
  • 将Visual Studio中的符号路径添加到包含.pdb的文件夹
  • 将.pdb上载到符号服务器(适用于其他库)
  • 将目录添加到项目选项中的“库目录”
  • 使用PDBALTPATH删除最终exe中的符号路径,但这不适用于静态库
唯一有效的方法是:

  • 将L.lib直接链接到主应用程序,但这不是一个解决方案,因为a不必知道模块M中使用的库
  • 使用与原始计算机完全相同的路径将.pdb放入本地文件夹,即D:\thirdparty\L\。。。这显然不是一个解决方案,但表明VisualStudio可以使用PDB中的硬编码路径加载符号
在另一个库中使用静态库似乎有问题,或者可能是VS错误

有没有人遇到过这样的事情,知道如何解决


干杯

据我所知,静态库没有与之关联的pdb文件(在调试时)。代码被添加到主应用程序exe中,符号也与主应用程序exe合并。我认为问题在于M图书馆的建设。您是否尝试将L库的pdb与库本身放在同一文件夹中?当你调试A时,你能从M进入代码吗?谢谢你的澄清和提示。我已将L.pdb放在输出文件夹M\Win32\Debug\lib中M.lib旁边,它成功了!太好了!M是主应用程序的一个模块部分,因此同时构建,我可以进入它。现在的问题是如何告诉VS在哪里可以找到L.pdb,因为L是第三方库并且在不同的文件夹中。目前它必须位于一个临时构建文件夹中,所以我不想在构建之前调用脚本将其复制到那里。在references属性中,我可以看到M及其完整的绝对路径,我假设VS在它旁边查找pdb。据我所知,静态库没有与之关联的pdb文件(在调试时)。代码被添加到主应用程序exe中,符号也与主应用程序exe合并。我认为问题在于M图书馆的建设。您是否尝试将L库的pdb与库本身放在同一文件夹中?当你调试A时,你能从M进入代码吗?谢谢你的澄清和提示。我已将L.pdb放在输出文件夹M\Win32\Debug\lib中M.lib旁边,它成功了!太好了!M是主应用程序的一个模块部分,因此同时构建,我可以进入它。现在的问题是如何告诉VS在哪里可以找到L.pdb,因为L是第三方库并且在不同的文件夹中。目前它必须位于一个临时构建文件夹中,所以我不想在构建之前调用脚本将其复制到那里。在references属性中,我可以看到M及其完整的绝对路径,我假设VS在它旁边寻找pdb。