0

メソッドの1つがoutによる引数として文字列を期待するこのdllを使用しています。

void function(out string param);

文字列を out で渡すと、プログラムがクラッシュします。私はC#を使用しています。VS2010 の出力デバッグ ウィンドウに表示される出力は次のとおりです。

問題は突然で短いため、これ以上説明する方法がわかりませんが、さらに質問がある場合はお知らせください...

更新: これは ActiveX dll であり、COM が Unicode で文字列を返すことに言及しているチュートリアルに出会いました。それが問題の原因ですか?

4

3 に答える 3

1

メソッド呼び出しに「out」という単語を含めていますか?

string str;
function(out str);
于 2012-05-10T21:09:29.400 に答える
1

デバッグ方法:

これは、ネイティブ/マネージド相互運用性の問題のようです。そのため、VS デバッガーが x86 の場合は混合 (ネイティブ/マネージド)、x64 の場合は純粋にネイティブに設定されていることを確認してください。

「マイ コードのみ」をオフにし ([オプション] -> [デバッグ])、ネイティブ例外に対してスローされたときに [デバッグ] -> [例外] -> をオンにします。

このようにして、スタックを取得し、何が起こっているかを確認します。

注: C および C# パーツのソースがあると、デバッグの必要がなくなる可能性があります...

于 2012-05-10T21:01:25.543 に答える
0

上記の Ed S に同意します。マネージド コードと非マネージド コードの間で引数を渡しているため、StringBuilder を使用してみてください。残念ながら、ネイティブ コードがないため、あまりデバッグすることはできません。

于 2012-05-11T00:46:19.473 に答える