@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

アンマネージドDLLのデバッグについて

1
投稿者投稿内容
まかろに
常連さん
会議室デビュー日: 2005/06/17
投稿数: 41
投稿日時: 2005-12-16 17:30
いつもお世話になっております。

現在、ネイティブC++で作成したDLLを、マネージドC++でラップし
そのDLLをC#で作成したアプリケーションで使用しています。

アプリケーションの方で、アンマネージデバッグを有効にしているので
普通に、ネイティブC++のDLLの関数の中まで追っかけれるのですが
引数に" std::string "を持つ関数だけ中に入ることができません。

これは何か設定が足りないとかなんでしょうか?
ご教授宜しくお願い致します。

[開発環境]
WindowsXP
Visual Stdio .NET2003
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 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/06/17
投稿数: 41
投稿日時: 2005-12-16 18:39
引用:

burton999さんの書き込み (2005-12-16 18:05) より:
VS2005から可能になったらしくVS2003では不可能なようです。




ふ、不可能ですか、そうですか…
それならしょうがないですね、きっぱりあきらめます。

ちなみに、タイトルとはちょっと議題がずれてしまうのですが
エクスポートするクラスに STL をメンバとして含んでる場合は
DLL ではなくて、LIBファイルにしたほうがいいんでしょうか?
ネットで調べているとちらほらそういう意見を目にしますので。
もしそうなら、理由等を教えていただけるとありがたいです。

宜しくお願い致します。

渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-12-17 20:08
引用:

ちなみに、タイトルとはちょっと議題がずれてしまうのですが
エクスポートするクラスに STL をメンバとして含んでる場合は
DLL ではなくて、LIBファイルにしたほうがいいんでしょうか?



「クラスのエクスポート」をしているなら、あまり関係ありません。
「クラスのエクスポート」をした時点で 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

スキルアップ/キャリアアップ(JOB@IT)