2

我面临堆损坏错误:我有一个 dll 和 TestAPP。

  1. vector<Point> vInPts;// 测试应用程序 - 转储输入如下

    vInPts.push_back(Point(730,405));
    vInPts.push_back(Point(319,680));
    vInPts.push_back(Point(292,757));
    vInPts.push_back(Point(318,756));
    vInPts.push_back(Point(726,736));
    vInPts.push_back(Point(344,731));
    
  2. vector<Point> vOutPts;

  3. vInPts调用 DLL -> 将相同的向量复制到vOutPtsDLL 中的向量” -> 从该函数返回到 TestApp 时 -> 出现堆错误。现在面临堆错误在此处输入图像描述

如何修复此堆错误?
提前致谢 !!!

4

1 回答 1

2

Point阅读您的班级的实际定义会很有趣。它可以正确复制吗?

此外,由于您使用的是带有 STL 类的 DLL 和 EXE,请确保 DLL 和 EXE 都使用动态链接构建到相同风格的 CRT(例如,两者都使用相同版本的 C++ 编译器构建,并使用相同的设置,例如发布构建 DLL 和发布构建 EXE 等)

事实上,STL 类的实现在发布构建和调试构建中有所不同(例如,在调试构建中,诸如迭代器验证等检查的开销更大)。
如果一个 STL 类在 EXE 和 DLL 之间共享,它必须是同一个类,而不是同名的类但不同的实现。

于 2013-04-17T08:23:00.447 回答