- - PR -
アンマネージドDLLのデバッグについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-12-16 17:30
いつもお世話になっております。
現在、ネイティブC++で作成したDLLを、マネージドC++でラップし そのDLLをC#で作成したアプリケーションで使用しています。 アプリケーションの方で、アンマネージデバッグを有効にしているので 普通に、ネイティブC++のDLLの関数の中まで追っかけれるのですが 引数に" std::string "を持つ関数だけ中に入ることができません。 これは何か設定が足りないとかなんでしょうか? ご教授宜しくお願い致します。 [開発環境] WindowsXP Visual Stdio .NET2003 | ||||||||
|
投稿日時: 2005-12-16 18:05
VS2005から可能になったらしくVS2003では不可能なようです。
下記の本に書かれていました。 Amazon.co.jp:.NET Expert #01: http://www.amazon.co.jp/exec/obidos/ASIN/4774124532/qid=1134723841/sr=8-1/ref=sr_8_xs_ap_i1_xgl/249-0814007-6089127 | ||||||||
|
投稿日時: 2005-12-16 18:39
ふ、不可能ですか、そうですか… それならしょうがないですね、きっぱりあきらめます。 ちなみに、タイトルとはちょっと議題がずれてしまうのですが エクスポートするクラスに STL をメンバとして含んでる場合は DLL ではなくて、LIBファイルにしたほうがいいんでしょうか? ネットで調べているとちらほらそういう意見を目にしますので。 もしそうなら、理由等を教えていただけるとありがたいです。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2005-12-17 20:08
「クラスのエクスポート」をしているなら、あまり関係ありません。 「クラスのエクスポート」をした時点で DLL の汎用性は大部分失われてしまっています。 で、どうせ汎用性が無いなら「LIB にするべきか」という議論は必要無いと思われます。 せいぜい、Debug ビルドと Release ビルドの使い分けに注意すれば事足りんじゃないでしょうか。
この辺は使い方の問題です。 .dll 内部で malloc()/new で確保した領域を、.exe 内で free()/delete するような操作が無ければ特に問題はありません。 ただし、STL のコレクションを使っていると、プログラマが意識していないところでそういった操作が発生することがあるので要注意、というこです。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ |
1