C++ Visual Studio无法从主应用程序模块上使用的静态库加载符号
我在模块M中使用了一个静态库L(也是一个静态库),并且该模块与主应用程序a链接。如果我调试主应用程序a,我将无法进入代码或看到库L的符号,因为Visual Studio不会加载其符号。(我正在使用VS 2013) 库L构建在另一台机器上,其本地路径类似于D:\thirdparty\L\。。。我可以在这台机器上很好地调试,看到符号并逐步进入代码,但不能在单独获取这个库的机器上进行调试。 图书馆必须建在一台单独的机器上 我的尝试(没有成功):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
- 将L.pdb放在A.exe旁边
- 将Visual Studio中的符号路径添加到包含.pdb的文件夹
- 将.pdb上载到符号服务器(适用于其他库)
- 将目录添加到项目选项中的“库目录”
- 使用PDBALTPATH删除最终exe中的符号路径,但这不适用于静态库
- 将L.lib直接链接到主应用程序,但这不是一个解决方案,因为a不必知道模块M中使用的库
- 使用与原始计算机完全相同的路径将.pdb放入本地文件夹,即D:\thirdparty\L\。。。这显然不是一个解决方案,但表明VisualStudio可以使用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。据我所知,静态库没有与之关联的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。