【发布时间】:2011-01-15 18:25:43
【问题描述】:
我编写了一个共享库,部分由用 Visual Studio 6(纯 C)编写的 Windows 应用程序使用。
该库在 Linux 下完美运行,但在 Windows 下某些地方出现问题(它使用了一些可能包含错误内容的 #ifdef WIN32)。
但是在 VS6 中将库 DLL 作为“附加 DLL”添加到项目中并在调试模式下运行应用程序,它表示 DLL 文件不包含调试信息。
该库是基于 gcc 构建的,没有优化 (-O0) 和调试符号 (-g)。
i586-mingw32msvc-nm -a file.dll 确实显示符号,当剥离 DLL 时,它的大小减半,i586-mingw32msvc-nm -a file.dll 将不再显示任何内容。
但 Visual Studio 6 仍然抱怨缺少调试信息。并使用“Dependeny Walker”工具在库中显示“Debug = No”。
为了能够解决在Windows下运行时出现的问题,调试信息至关重要。但是如何将它们包含在 DLL 中(以 VS6 兼容的方式)或者将它们提取到 dbg/pdb 文件中?
【问题讨论】: