1

この (管理されていない) C++ ライブラリを使用する必要があります。メソッドの 1 つには、パラメーターとして wchar_t* があります。C# で使用しようとしましたが、すべての試行で「無効な引数」というエラー コードが発生しました。

そのためのマネージ C++ ラッパーを作成しました - 同じ問題です。ここで、C++ ラッパーと、ライブラリに付属のネイティブ C++ サンプルの引数の値を比較しました。私が目にする唯一の大きな違いは、マネージ C++ の NUL は "0 L''" (Visual Studio ウォッチ) であり、アンマネージの例の NUL は単純に "0" であることです。どちらも同じ値を持っています... 0.

これは本当に問題になるのでしょうか?(その文字を手動で「0」に設定しようとしましたが、同じ結果が得られました) はいの場合、どうすれば解決できますか?

編集: 画像: http://img6.imageshack.us/img6/5977/comparisonofvalues.png わかりました、左側は私のコード (マネージド C++)、右側は例 (アンマネージド C++) です。そのままでは、右のものは機能していますが、左のものは機能していません (関数は引数を拒否します)。問題は 17 文字目の NUL にあると思います。さらに考えはありますか?

4

2 に答える 2

1

デバッガーの違いは見た目だけです。デバッガーは通常、バイナリ値と一致する Unicode 文字の 2 つの値を表示することに注意してください。But you can't show a Unicode character for binary value 0. 2 つのデバッガーはわずかに異なる方法で処理します (表示するL''場合と何も表示しない場合) が、メモリ内のビットは同じです。

一方、あなたのip文字列はゴミです。

于 2011-09-26T13:34:50.997 に答える
0

プロジェクトのプロパティを確認してください。wchar_t を組み込み型として扱うかどうかを制御するコンパイラ オプションがあります。これを NO に設定すると、wchar_t の古いヘッダー定義が使用され、問題が解決する場合があります。

于 2011-09-23T19:31:26.033 に答える