我正面临堆损坏错误:我有一个dll和TestAPP。
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));
vector<Point> vOutPts;
调用DLL - &gt;将同一vInPts
向量复制到DLL中的vOutPts
向量“ - &gt;从此函数返回到TestApp时 - >出现堆错误。现在面对堆错误
如何修复此堆错误?
在此先感谢!!!
答案 0 :(得分:2)
阅读Point
课程的实际定义会很有趣。它是否可以正确复制?
此外,由于您使用的是DLL和带有STL类的EXE,请确保DLL和EXE都使用动态链接构建到相同的CRT风格< / strong>(例如,两者都使用相同版本的C ++编译器构建,并使用相同的设置,例如发布构建DLL以及发布版本EXE等)。
事实上,STL类的实现在发布版本和调试版本中有所不同(例如,在调试版本中,迭代器验证等检查会产生更多开销。) 如果在EXE和DLL之间共享STL类,则它必须是相同的类,而不是具有相同名称但具有不同实现的类。