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. vInPtsDLL 呼び出し→DLL 内の vector に同じvector をコピーvOutPts」→この関数から TestApp に戻る際に→ Heap Error が発生。今直面している Heap Errorここに画像の説明を入力

このヒープ エラーを修正するにはどうすればよいですか?
前もって感謝します !!!

4

1 に答える 1

2

Pointクラスの実際の定義を読むのは興味深いでしょう。正しくコピーできますか?

さらに、STL クラスで DLL と EXE を使用しているため、DLL と EXE の両方がCRTの同じフレーバーへの動的リンクでビルドされていることを確認してください(たとえば、両方が同じバージョンの C++ コンパイラでビルドされ、および同じ設定 (たとえば、リリース ビルド DLL とリリース ビルド EXE など) を使用します)。

実際、STL クラスの実装は、リリース ビルドとデバッグ ビルドでは異なります (たとえば、デバッグ ビルドでは、反復子の検証などのチェックのオーバーヘッドが大きくなります)。STL クラスが EXE と DLL の間で共有される場合、同じ名前のクラスではなく、実装が異なる同じ
クラス である必要があります。

于 2013-04-17T08:23:00.447 に答える