debugging - 为什么我不能在 C++ 项目中进入我的库源代码?
问题描述
我有一个使用 DLL 的小型 C++ 程序。该程序和 DLL 在同一个解决方案中,并且都是使用 Visual Studio 2008 编写的。我无法进入库的源代码。我在两个项目中都设置了用于调试的链接器。
库编译器命令行是:
/I "../CapsData" /I "../CapsLib" /I "../Include" /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "GREAT_LAKES_EBNER"
/D "SKIP_SITE_H" /D "DEPLOYMENT_PLANLIB" /D "DEBUG" /D "_WINDLL" /D "_AFXDLL" /D "_UNICODE" /D "UNICODE"
/FD /EHsc /MDd /Fo"Debug GLW Ebner\\" /Fd"Debug GLW Ebner\vc90.pdb" /nologo /c /TP /errorReport:prompt
库链接器命令行是:
/OUT:"../Debug GLW Ebner\DeploymentPlanLib.dll" /NOLOGO /LIBPATH:"../Debug GLW Ebner/Lib" /DLL /MANIFEST
/MANIFESTFILE:"Debug GLW Ebner\DeploymentPlanLib.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker'
uiAccess='false'" /DEBUG /PDB:"q:\CAPS\trunk\Debug GLW Ebner\DeploymentPlanLib.pdb" /DYNAMICBASE /NXCOMPAT
/IMPLIB:"../Debug GLW Ebner/Lib/DeploymentPlanLib.lib" /ERRORREPORT:PROMPT CapsLib.lib CapsData.lib
主程序编译命令行为:
/Od /I "../CapsLib" /I "../Include" /I "../DeploymentPlanLib" /I "../CapsData" /D "WIN32" /D "_DEBUG"
/D "_CONSOLE" /D "GREAT_LAKES_EBNER" /D "SKIP_SITE_H" /D "DEBUG" /D "_AFXDLL" /D "_UNICODE" /D "UNICODE"
/Gm /EHsc /RTC1 /MDd /Yu"stdafx.h" /Fp"Debug GLW Ebner\ConnectionStringTest.pch" /Fo"Debug GLW Ebner\\"
/Fd"Debug GLW Ebner\vc90.pdb" /W3 /nologo /c /ZI /TP /errorReport:prompt
主程序链接器命令行是:
/OUT:"../Debug GLW Ebner\ConnectionStringTest.exe" /INCREMENTAL /NOLOGO /LIBPATH:"../Debug GLW Ebner/Lib"
/MANIFEST /MANIFESTFILE:"Debug GLW Ebner\ConnectionStringTest.exe.intermediate.manifest"
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG
/PDB:"q:\CAPS\trunk\Debug GLW Ebner\ConnectionStringTest.pdb" /SUBSYSTEM:CONSOLE /DYNAMICBASE /NXCOMPAT
/MACHINE:X86 /ERRORREPORT:PROMPT CapsLib.lib DeploymentPlanLib.lib
PS 一位审阅者从这篇文章中删除了“visual-studio-debugging”标签,并添加了简单的“debugging”标签。我不同意这种做法。此问题特定于在 Visual Studio 2008 环境中进行调试。因此,visual-studio-debugging 标签更为合适。我已按照建议添加了调试标签。
解决方案
我将尝试进入的库的项目设置与我能够进入的库的设置进行了比较。有几个不同之处。我更改了我的目标库设置以匹配,我能够进入它。
以下是有效的命令行:
固定库编译器命令行:
/Od /I "../CapsData" /I "../CapsLib" /I "../Include" /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "GREAT_LAKES_EBNER"
/D "SKIP_SITE_H" /D "DEPLOYMENT_PLANLIB" /D "DEBUG" /D "_WINDLL" /D "_AFXDLL" /D "_UNICODE" /D "UNICODE"
/Gm /EHsc /MDd /Fo"Debug GLW Ebner/" /Fd"Debug GLW Ebner/" /W3 /nologo /c /Zi /TP /errorReport:prompt
固定库链接器命令行:
/OUT:"../Debug GLW Ebner\DeploymentPlanLib.dll" /INCREMENTAL:NO /NOLOGO /LIBPATH:"../Debug GLW Ebner/Lib"
/DLL /MANIFEST /MANIFESTFILE:"Debug GLW Ebner\DeploymentPlanLib.dll.intermediate.manifest"
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"q:\CAPS\trunk\Debug GLW Ebner\DeploymentPlanLib.pdb"
/SUBSYSTEM:WINDOWS /DYNAMICBASE:NO /IMPLIB:"../Debug GLW Ebner/Lib/DeploymentPlanLib.lib"
/MACHINE:X86 /ERRORREPORT:PROMPT CapsLib.lib CapsData.lib
推荐阅读
- node.js - 未使用 npm 安装软件包
- javascript - Google Script createEvent() 函数突然停止工作
- sql - SQL / Teradata - 如何从一个表中获取与另一个表中的日期列相关的最新记录?
- ruby-on-rails - 由于某种原因,“新”方法在 Graphql-ruby 的 BaseConnection 的子类上受到保护
- firebase - 在 Firebase Cloud Messaging 中,我在哪里可以看到已注册推送的用户/设备列表?
- python - TypeError:对象无法转换为 IntegerDtype
- java - JDBC 模板为空
- java - Hadoop 1.2.1 - mapreduce 编译期间的“java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf”
- python - 将由 RF 制作的子词典与从 python 中的函数获取的词典进行比较
- html - 删除或制作表格的透明背景和标题颜色