![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VS.NET2005のC#からVC++6.0で作成したDLLを呼び出しています。
VCのデバッガでデバッグしてみると呼び出した関数は正常に動作しているようなのですが、最後のreturnを実行しC#に戻るところでエラーが出てしまいます。
C#側では「'System.ExecutionEngineException' のハンドルされていない例外が ConsoleApplication1.exe で発生しました。」となります。
C#での宣言は、
[DllImport("test.dll")]
public static extern uint TestFunc(ref byte[] moji, ref uint nagasa);
です。
VC++の宣言は、
__declspec(dllexport) unsigned long __stdcall TestFunc(unsigned char* moji, unsigned long* nagasa)
です。
C#へ値を返さない関数は問題ないのですが、値を返そうとすると起きるようです。不備などあればご指摘いただけないでしょうか。
ちなみにVB6からは問題なく動作できました。
No.1ベストアンサー
- 回答日時:
C#側とC++側の宣言が食い違っていますよ
C#側で
public static extern uint TestFunc(ref byte[] moji, ref uint nagasa);
としているので mojiは C++の受けが unsigned char** として受けないといけないかと
C++側を基準にするなら
public static extern uint TestFunc(byte[] moji, ref uint nagasa);
として mojiに対してのrefが不要に思います
C++側でmojiの内容を変更しているのだとすると間違った領域を変更していそうです
早速試してみたところ上手くいきました!!
ずーっと悩んでいたので非常に助かりました。
なるほどunsigned char*にはrefは必要ないのですね・・・てっきり戻りにはrefが必要なのかと思っていました。すごく勉強させていただきました。本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- C言語・C++・C# 3つの倍精度浮動小数点値の平均を求めて、3つの引数全てを平均値に変更するメソッドを作成し、キーボード 1 2022/07/13 16:04
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#で、あるクラスのメンバーす...
-
C#でのWNetAddConnection3の使...
-
unityでのC++エラーの原因がわ...
-
C#で別のFormへ複数の値を返そ...
-
大量のデータを読み込んで表示...
-
ピクチャボックスのクリックイ...
-
メンバ変数の隠蔽
-
Javaでデリゲート
-
長方形をドラッグするJavaアッ...
-
JavaFXでの表内のチェックボッ...
-
Junitテストでvoid戻り値メッソ...
-
Thread.sleepのInterruptedExce...
-
[C#.net]スレッド化された別フ...
-
クラス配列で例外ヌルリファレ...
-
アプレットでマウスイベントが...
-
文字列の置換
-
キーリピート?(Javaプログラミ...
-
ボタンの複数割り当てについて
-
vc++ 2005 Pictureboxの透過処理
-
C#でレート別に管理するクラス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
C#で、あるクラスのメンバーす...
-
Junitテストでvoid戻り値メッソ...
-
C#でのWNetAddConnection3の使...
-
Processingでマウスクリックで...
-
ボタンの複数割り当てについて
-
エンターキーを押すとOKボタン...
-
C# 矢印キーの取得
-
C# visibleプロパティをfalseに...
-
Thread.sleepのInterruptedExce...
-
C# DataGridView列カスタマイズ
-
C#でキーイベントが発生しない...
-
LVM_SETITEMSTATEでListViewの...
-
[C#.net]スレッド化された別フ...
-
GetDIBits関数の使い方について
-
C# 半角カナの文字化けについて
-
C# 親フォームで指定した値を...
-
javaアプレット repaintのタイ...
-
デスクトップマスコットのドラ...
-
C#で別のFormへ複数の値を返そ...
おすすめ情報