質問

私は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を再コンパイルする必要があります。あまりにもここで説明するにはあまりにも技術的なものイテレータに関する他の問題があります。

申し訳ありませんがお奨めの再構築

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top