0

我有一个使用 /MTd 运行时库的本机 c++ exe。我无法更改此选项,因为我对此 exe 的构建没有太多控制权。我需要在这个 exe 中调用一个 CLI C++ dll,它返回一个带有 STL 向量成员变量的类。在 CLI C++ 方法返回时,我得到一个堆损坏错误。根据我的分析,发生这种情况是因为有两个不同的 CRT,并且向量解除分配方法在本机 CRT 中运行,并且由于地址无效而导致炸弹。

如何从使用不同 CRT 编译的 CLI C++ dll 返回向量以与我的本机 exe 一起运行?

4

1 回答 1

1

您的评估是正确的——在一个 CRT 内执行的分配不能在另一个 CRT 内解除分配。这是一个简单的规则,没有办法绕过它。

您需要使用相同的运行时库设置构建两个模块,或者您只需要在模块边界之间传输 POD 类型。

于 2011-06-08T16:57:43.117 回答