悪いポインタまたはリンクの問題VC6のDLLからのwstringを作成します
-
19-09-2019 - |
質問
私はVC6とwstring
を使用して生成されたDLLを得た、と私はVC9プロジェクトでそれを使用しようとしています。
このDLLに上位クラスの操作wstring
と呼ばUtfString
があります。
私は自分のプロジェクトに正しくインポートすべてのものを得たが、私は呼び出すときます:
std::wstring test;
UtfString uTest(test);
それは...関数のプロトタイプは、libにある場合でも、リンクしません。
他の発行者は、新しいUtfStringを作成し、私のアプリをデバッグするとき、新しいポインタが<Bad Ptr>
であるということです。
私はVC6のwstring
とVC9のwstring
間の競合を疑うが、私はよく分かりません。私は、元のDLLを修正しないようにしたい。
それは素晴らしいことだ。
あなたの答えを事前に感謝し、 ボリス
解決
DONT EVEN TRY
の文字列のレイアウトが異なっている。
あなたがそれを行うことはできません。
文字列クラスはVC6とVC9の間で全く異なっています。
あなたが最も可能性が高いでしょうクラッシュをリンクすることができたとしても。
VC9文字列では、小さな文字列と文字列のポインタのための16バイトのバッファである労働組合を持っているS。T.サイズ()> 15。 VC9のwstringsでは、小さな文字列と文字列のポインタのための8のwcharバッファである労働組合を持っているS。T.サイズ()> 7
VC6内のすべての文字列バッファ空間はヒープ上に割り当てられます。
あなたが境界を越えて文字列を渡す場合は、DLLを再コンパイルする必要があります。あまりにもここで説明するにはあまりにも技術的なものイテレータに関する他の問題があります。
申し訳ありませんがお奨めの再構築