我正在构建一个应用程序,其输出是最终被另一个客户端应用程序使用的库。我最近发现我正在使用/MDd
代码生成(调试 CRT 库)在调试模式下构建我的应用程序,并且即使/MD
在调试模式下使用,客户端应用程序也是针对发布 CRT 构建的。因此,这可能会导致一些内存堆损坏错误。为了确认,我在发布模式下测试了所有内容,它似乎工作正常。
为了解决这个问题,我也尝试了release with debug info
构建(/MD
)并将客户端应用程序的调试构建与此relwithdebinfo
构建相关联,但现在在测试我的示例时,我在客户端应用程序中看到了一些奇怪的行为。准确地说,当我分配一个字符串时,说使用:
std::string client_str = some_namespace_in_my_library::class_name::string_name,
我发现 client_str 没有分配,而是保持为空。当一切都在调试中构建时(当存在混合和匹配时),这工作正常。任何想法为什么会发生这种情况?上面引用的命名空间中的字符串是类的静态公共成员,class_name
. 所有这些都在 MS VC++ 2005 上。非常感谢任何建议/帮助。谢谢!