1

VS2010を使用しており、アプリケーションをビルドする必要があります。また、VS2005でビルドされた.libと.hを含む.dllがあります。このライブラリはlog4cxx.dllに依存しています(私は2010年にビルドし、2005年のバイナリをダウンロードしました)。ビルドされたオブジェクトへの参照を返すライブラリインターフェイスメソッドを呼び出すと、AV例外がスローされます。別のバージョンでアプリをビルドできません。アプリの種類をマルチスレッドデバッグに変更しようとしました。

4

1 に答える 1

1

取得しているオブジェクトには、別のメモリ レイアウトがある可能性があります。ランタイムの境界を越えて C++ オブジェクトを渡す場合は、受け取るオブジェクトが同じレイアウトであることを確認する必要があります。たとえば、VS2005 コンパイラが最適化のためにフィールドを並べ替え、VS2010 が別の方法でそれを行った場合。または、使用したクラスの 1 つ (std::string など) がバージョン間で変更されました。COM メソッドからオブジェクトがどのように返されるかを確認します。

あるランタイムでのオブジェクトの割り当てと別のランタイムでの割り当て解除にも問題があります...

解決策として、VS2005 をインストールしてみることができますが、同じ結果になるという保証はありません。

于 2013-03-14T12:47:17.570 に答える