使用发布 CRT 在调试中构建应用程序,并在提升时存在依赖问题
Building application in debug with release CRT with dependency issues on boost
我正在构建一个依赖于boost的应用程序。我的应用程序输出是最终由另一个客户端应用程序使用的库。我最近发现我正在使用/MDd 在调试模式下生成应用程序以进行代码生成(调试 CRT 库),并且即使在调试模式下,客户端应用程序也是针对发布 CRT 构建的。因此,这可能会导致一些内存堆损坏错误。为了确认这一点,我在发布模式下测试了所有内容,并且一切正常。
为了解决这个问题,我针对 CRT 版本库在调试模式下构建了我的应用程序......但是现在我的应用程序(在独立测试中)在运行时失败。我的理解是这是由于提升依赖性,并且提升调试可能是针对调试 CRT 库构建的?我查看了提升文档,但找不到我想要的确切内容......这是如何针对发布 CRT 重建提升(在调试模式下)?感谢任何帮助/想法/示例。谢谢你的时间!
除了@AlKepp的回答之外,我还建议看看Dependency Walker(http://dependencywalker.com/)。这是一个免费工具,可向您显示您的库或应用程序所依赖的库。通常,您应该确保仅显示Microsoft C/C++运行时 DLL 的发布版本或调试版本(例如 MSVCP90.DLL
vs MSVCP90D.DLL
)。
如果您的应用程序在运行时加载更多库(例如插件),请使用 Profile->Start Profiling
从依赖 Walker 运行应用程序。然后,它将向您显示实际加载或尝试在执行期间加载的所有库。
这对解决任何依赖项问题有很大帮助,尤其是在意外混合发布和调试版本的情况下,它对我有很大帮助。
我过去也有类似的问题。我通过仅使用启用了调试功能的发布版本来解决它。您可以更改默认发布配置以生成所有必需的调试信息并省略优化或其中一些优化,也可以创建默认发布配置的克隆,以让您同时拥有原始(即实际发布)和启用调试的发布配置。
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- 在包含窗口标头时难以解决循环依赖关系问题
- C++ 中的循环依赖关系问题
- 交叉依赖项类的问题
- "std::shared_ptr"循环依赖关系是如何导致问题的
- 生成的依赖项问题
- C++ API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL依赖项问题
- 这是静态库依赖树中的菱形问题吗?
- 是库依赖问题可以通过接口避免
- C 如何在Typedef模板和类之间修复依赖关系问题
- 另一个模板循环依赖问题
- 命名空间内类的循环依赖问题
- 交叉编译助推 1.60.0 内部依赖问题
- CMAKE:目标依赖项存在问题(add_dependency不起作用?
- 显式模板专用化和依赖名称查找问题
- DLL 无法加载:0x8007007E找不到模块。不确定导致此依赖项问题的原因
- 使用发布 CRT 在调试中构建应用程序,并在提升时存在依赖问题
- WindowsCE 依赖关系问题随着算法的变化而消失
- 我在一个简单的参数依赖查找/模板类型推断问题方面遇到问题
- 视觉C++在解决循环依赖关系时遇到了设计问题