• ベストアンサー

C#からCで作成したDLLにステップインできません

C#からCで作成したDLLにステップインできません。 対策としては以下を行いましたが、ステップインできませんでした。他の対策を知っていたら教えてください! 環境:C#, CともにVS2008, Windows XP professional ・プロジェクトのプロパティのデバッグタブで、「アンマネージのデバッグを~」にチェックを入れる。 ・完全なソースを必要とするのチェックをはずす。 ・C#のexeと同一DIRにdllと、pdbファイルを配置する。 ・全てデバッグでコンパイルする。

  • otaks
  • お礼率53% (270/507)

質問者が選んだベストアンサー

  • ベストアンサー
  • sygh
  • ベストアンサー率76% (42/55)
回答No.1

C関数がエクスポートされているDLL側がWin32であれば、C#側の「プラットフォーム ターゲット」をx86にして、DLL側がx64であれば、C#側もx64にしてみるとか。デフォルトではAny CPUになっているはず。 せめてDLL側の関数宣言部やEXE側の呼び出しコード(P/Invoke)をそれぞれ部分的にでも書いておかないと、類推するのは難しいです。

otaks
質問者

お礼

ご回答ありがとうございます。偶然にも自己解決いたしました。 今までは、アプリケーションを起動した後に、IDEでもってアタッチする。という 方法をとっていたのですが、これでは対象のモジュール(dll)がまだロードされて いない状態でした。 F5でデバッグ実行をすると、今までステップインできなかったモジュールが最初に ロードされて、ステップインもできるようになりました。 お手数をおかけしましたm(。。)m

関連するQ&A

  • CのEXEからC#のDLLを呼び出す

    C及びC#のPGは初心者ですが、宜しくお願いします。 現在、Cで作成したEXEからC#で作成したDLLを参照するとエラーが発生します。ただ、EXEとDLLを同じフォルダ内に配置すると正常に動作します。DLLを別のフォルダに配置するとエラーが発生します。 CがC#のDLLのPathが分からないからエラーが発生していると思っているのですが、Cのプロジェクトで何を設定したらいいのか、全然分かりません。 宜しくお願いします。

  • Borland C++ Builderによるdll作成について

    Borland C++ Builderを使用してプロジェクトをコンパイル してdllを作成する際、コンパイルに成功してあるdllができたとして、 その後プロジェクトに何の変更もなく、再コンパイルすると dllの中身は何か変わっているのでしょうか? 例えば、コンパイル日時の情報が中に書き込まれているなど。 サイズが変わることもあるのでしょうか?

  • C++/CLIで、アンマネージC++のDLLを使用する方法

    こんにちは。 C++/CLIのプログラムで、アンマネージC++のDLLを使用したいと考えています。 ネット上をいろいろ調べたのですが、具体的な手段がわかりません。 見よう見まねで以下のようにサンプルを作成したのですが、コンパイルすら通る状況になりません。 かなり基本的な問題がありそうで申し訳ないのですが、下記の問題点を教えていただけないでしょうか。 また、参考になりそうなサイトなどありましたら教えていただけると大変助かります。 ■アンマネージC++のDLL VC++6.0で、以下のように、単にデバッグ文字列を書き出すだけのDLL関数を作成しました。 (このDLLが使用できることは他のVC++6.0プロジェクトで確認済みです) /*-----Func.h-----*/ #ifndef __FUNC_H__ #define __FUNC_H__ AFX_EXT_CLASS void WINAPI ShowMessage(); #endif //__FUNC_H__ /*-----Func.cpp-----*/ #include "StdAfx.h" #include "Func.h" #include <stdio.h> void WINAPI ShowMessage() { CString str = "This is The Message from DLL Func!\n"; OutputDebugString(str); } ■C++/CLI でのDLL使用 Visual Studio2008にて、C++のCLRプロジェクトを作成して、以下のようにDLLを使用する準備を行いました。 1.ソリューションエクスプローラのヘッダフォルダに、Func.hを追加 2.プロジェクトのフォルダに、上記で作成したFuncのDLLとLIBファイルを置く。 3.プロジェクトの「プロパティ > C/C++ > プリプロセッサ > プリプロセッサの定義」に、"_AFXDLL"を追加 4.mainクラスのソースに以下を記述 /*----------*/ using namespace System; #include "Func.h" #using "ManagedDllApp.dll" int main() { ShowMessage(); return 0; } /*----------*/ この状態でコンパイルすると、 「エラー 3 error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。 d:\xxx\Func.h 4 Console 」等、Func.h周りで複数のエラーが出ます。 また、Func.hをインポートしないでコンパイルすると、 「エラー 3 fatal error C1113: #using が 'd:\xxx\manageddllapp.dll' で失敗しました。 」と、Dllでエラーが出ます。 よろしくお願いいたします。

  • VC++で作成したDLLのデバッグ

    VC++6.0で作成したDLLファイルのデバッグ作業でVBでコンパイルした EXEファイルを使うと、例外エラーが発生してしまいます。 EXEファイルにデバッグ情報が書き込まれるのでしょうか? 次からそのEXEファイルを利用すると、やはり例外エラーがおきます。 (それに長い間気づかず、ずっとバグ探しをしてました。) VC++のDLLファイルのデバッグモードはVBのEXEファイルでは利用できないのでしょうか?

  • VS2008でVBとC++を一つのプロジェクトにすることができますか?

    VB6.0からの移行組です。現在VB6.0をメインにしてVC++6.0で作ったdllをVBで呼んでいます。VBでデバッグ中にC++で作ったdll内にバグがあった場合にどこにバグがあるかわからず不便です。 VS2008ではVBとVC++を一つのプロジェクトにまとめる事ができますか? そうすればデバッグ中にVBとVC++のコードを一連の流れで動かしてやれば、どこがおかしいのか分かりやすくて便利なんですが。 (C++がコンパイル型だから無理かな・・・) 素人な質問ですみませんがよろしくお願いします。

  • vs2013でC言語デバッグ

    空のプロジェクトからtest.cを追加してコンパイル実行するとコンソールがプログラム終了と 共に一瞬で閉じてしまいます。vs2012のときはプロジェクトのプロパティで終了しても画面が 閉じないようコンソールアプリと設定できたと思うのですが2013だとプロパティが見つかりません。 それと、cプログラムをステップインでデバッグすると printf関数のところで stdout 'PRINT','F'ormatted という何やら深いところを実行してしまってF11を押してもprintfから戻ってこれないのですが 普通にprintfを実行させるにはどうしたらよいのでしょう。

  • VB.netの初学者なんですが、

    VB.netの初学者なんですが、 VB.netが詳しい方、是非お願いいたします。 visual studio2008で、以前のVB.net(2003)のプログラムをコンパイルしてますが、 フォルダ名(abc.net)配下にいくつのプロジェクトがあります、main,ttt,ccc.exeのプロジェクトがありますが、abcってのプロジェクトがありません。 普通にコンパイル通れば、main.exe,ttt.exe,ccc.exeなどの実行モジュールが生成されて、デバッグ実行すれば、...\abc.net\obj\Debug\配下にmain.exe,main.pdb,ttt.exe,ttt.pdb,ccc.exe,ccc.pdbなどのファイルを生成できました。 以前の方は...\abc.net\obj\Debug\abc.exe,とabc.pdbの二つファイルを生成していました。私はすべてのプロジェクトをコンパイルして、デバッグ実行させて、その二つファイル(abc.exe,abc.pdb)の更新 日付は変わらず、以前の日付になっています。 どうすれば、abc.exeっていう実行モジュールが生成できますか。 それは現有のプロジェクト(main,ttt,ccc)中の1つプロジェクトにより、生成したと考えていますが、 どのファイル(拡張子)を見ると、どのプロジェクトより生成したことを分かりますか。 少し長いですが、よろしくお願いいたします。

  • VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。

    VisualStudio2003でDLLのデバックをブレークポイントやステップインで行う方法を具体的に教えて下さい。DLLのプロジェクトは、もうひとつのexeファイルと合わさって、1つのソリューションを構成しています。現状では、デバックを実行しようとすると、”デバック情報がありません”というダイアログボックスが開き、ブレークポイントの丸の上には、?が表示されます。

  • C++ Compilerについて

    私は、MicrosoftのVisualC++でコンパイルしてるんですけど、コンパイルして実行しようとしたら以下のようなメッセージが表示されました。何が問題なんでしょうか? すごく初歩的な質問とは思いますが、困っているので教えてください。 -------------------Configuration: project2 - Win32 DebugLinking... LINK : fatal error LNK1201: error writing to program database "A:\Debug\project2.pdb"; check for insufficient disk space Error executing link.exe. project2.exe - 1 error(s), 0 warning(s)

  • C# DLL(C++)の呼び出し

    自前のDLL(C++,DynamicLinkLibrary)を使っており 今回環境を変えようと試しているのですが、どうもエラーが発生し悩んでます。 (1)元々の環境 VS2008 MFCでLoasLibraryの呼び出し後、各関数も問題なく動作 (2)新しい環境 VS2013 C# DLLImport関数を使ったところ、エラー発生 改修内容 http://qiita.com/ask/items/ee2ff5b8706effc0c3d8 エラー内容 追加情報:hoge.DLL を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E) お願いです。どなたか、ご教授頂けませんか? DLL側プロジェクト構成の設定変更が必要? DLL側ソースコードがおかしい? DLL側のVSバージョンが低い? 何が悪いか分かりません。

専門家に質問してみよう