
いつも拝見させていただいております。
さっそくですが、質問致します。
現在、ネイティブなC++ DLLを作成しています。
これを今回、C#のアプリケーションから呼び出すことになりました。
DLL内にはクラスを作成しており、内部にXMLのデータを保持するような
クラスを作成しております。(XML操作にはMSXMLを使用しております。)
問題なのはC++アプリケーションから呼び出した時は正常に動作するのですが、C#からの呼び出しの時はC++アプリケーションから呼び出した時には発生していないエラーが検出されます。
エラー内容は
System.AccessViolationException
保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。
になります。
エラー内容からしてC++内でのメモリ操作に問題があると
思われるのですが、C++からの実行時には検出されていないので理由がわからずに困っております。
ネイティブなDLLに対してはデバッグも行えないため、手に負えません。
(現在、1行ごとにログを埋め込み、TCHAR型のnewを4byte行っている箇所で処理がストップしてしまっているようです。C++からの呼び出し時には正常に処理される箇所です。)
ネイティブなDLLに対してのデバッグ方法や似たような現象にあわれた方がいらっしゃいましたらご助力お願い致します。
・対象のDLLのクラスは_declspec(dllexport)にてエクスポートを行っています。
・C#からの呼び出し時にはネイティブなDLLのためC++/CLIで作成したプロジェクトでラッパークラスを作成してアクセスを行っています。
・C++アプリケーションからの呼び出し時はプロパティの設定でインクルードディレクトリ、LIBファイルの設定等を行って直接DLLを参照して
実行(呼び出し)しています。
No.1ベストアンサー
- 回答日時:
C++側の出力ファイル .DLL .PDB などを C#の出力フォルダ bin\debug などに出力しておいて
C#側のプロジェクトプロパティのデバッグの『アンマネージ コードのデバッグ』にチェックを付けておく
こうしておけば C++のコードもデバッグできると思いますよ
この回答への補足
ご回答頂いた内容にてアンマネージドコードのデバッグは
可能となりました。
ですが、また厄介なことにC#からの呼び出し時にデバッグしてみても
エラーとなりません。
アンナネージドコードデバッグを無効に設定すると再度現象が発生します。
他に何か有益そうな情報がありましたらご教授願いします。
回答ありがとうございます。
なるほど。設定を行うことでデバッグが可能となるとは思いませんでした。
これで少し進展があればよいのですが。。
ご助力ありがとうございます。
No.2
- 回答日時:
デバッグビルドではなくリリースビルドにして
C++DLL側を Debug情報の生成=はい にして
デバッグしてみてはいかがでしょう
デバッグビルド時に具現化しないバグも捕まえられるかもしれません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.netを実行するとデバック プ...
-
DLL参照時に指定されたモジュー...
-
visual studio2019でデバッグが...
-
Visual studio2017で、2回目の...
-
Eclipseのブレークポイントが○...
-
ブレークポイントは現在の設定...
-
C#、C++間のDLLの呼び出しについて
-
学校PCで問題なくデバッグでき...
-
VB6.0とVB2005の共存は可能か
-
VB6でコモンダイアログにバグ?...
-
デバッグとビルドは何が違うの...
-
VB6 exe作成時のアイコン変更方法
-
ビルド時のエラー(書き込みで...
-
C言語での開発でエラーが出て困...
-
visual studio 2019 についての...
-
Sub Main が実行されない
-
Release版のexeが動きません
-
VC++でDeugモードOKで、Release...
-
Visual Studio 2017 ビルドする...
-
Visual Studio 2010 のC#で…
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseのブレークポイントが○...
-
visual studio2019でデバッグが...
-
デバッグとビルドは何が違うの...
-
eclipseでデバックするとエラー...
-
DLL参照時に指定されたモジュー...
-
起動時に何のダイアログも表示...
-
Visual studio2017で、2回目の...
-
VB6のデバッガ?強制終了?につ...
-
visual studio 2008 のデバッグ...
-
eclipseでプログラムが実行でき...
-
VB.netを実行するとデバック プ...
-
C#、C++間のDLLの呼び出しについて
-
C言語での開発でエラーが出て困...
-
VC++でSQL Serverに接続するに...
-
デバッガでステップ実行してい...
-
vb ver6 でformat文やTrim文の...
-
ブレークポイントは現在の設定...
-
vbprojファイルが開けません
-
VC++でDeugモードOKで、Release...
-
「カレントフォルダ以外にある...
おすすめ情報