• ベストアンサー

VSC++でDLL出力でのデバックビルド

VSでデバックする際にC++はprintfなどで出力時に変数の情報の確認などができます。 DLL出力の際は出力した.dllファイルをソフトの場所においてデバッグの確認を取るたのでその場で実行されずprintfなどで変数の情報の確認を取ることができません。 実行時にアプリケーションを自動で立ち上げてデバッグを来ない情報をウィンドウの出力の場所に書き出す方法があったと思うのですがどうにも方法が見つかりません。 出力する.dllファイルの出力先の指定は行いました。 立ち上げるアプリケーション(.exe)の指定をする場所とその他まだ設定しなければならない事があれば教えてください。

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

OutputDebugString()のことですかね? DLLに限った話ではありませんし、printf()のようにコンソールには出ませんけど。

参考URL:
http://www.nitoyon.com/vc/tutorial/debug/win32.htm
suvera
質問者

補足

ありがとうございます! これで関数内に入ったなどの確認はできそうです。 使ってみて分からない事があるのですが、 この方法で値の確認などはできないでしょうか? wchar_t uni01[] = L"Ty_Joystick_Constraint:FBCreate()"; MessageBox(NULL, uni01, uni01, MB_OK); といった書き方で文字を表示することは出来ましたが値の確認方法がわかりません。 なにかしら方法はありませんか?

関連するQ&A

  • msvfw32.dllについて

    「MSVFW32.dllが 見つからないため アプリケーションを開始できませんでした。インストールしなおすとこの問題は解決される場合があります」とも 頻回にでます 教えていただいた「ファイル名を指定して実行」で「sfc /scannow」(*スラッシュ前に半角スペース必須)を実行してみましたが  確認はしますが なにも指示がありません。 どうしたらいいでしょうか? OSは XP Homeです。

  • VSのデバッグ出力内容をまとめてファイルに保存

     ご質問させていただきます。 どうぞよろしくお願い致します。 【環境】VS2013 Express(C#) + Windows10Pro になります。 (演算プログラムは趣味でよく作りますが、C・C#についてはまだまだ勉強中のレベルでございます。)  デバッグ実行するとVS画面下の「出力」タブに例外発生時の情報など沢山出てくると思います。 この内容すべてをデスクトップにテキストファイルで保存する方法を探しておりますが見つかっておりません。  現状、数時間ごとに、プログラム実行を停止する度に 「出力」タブで全選択→コピー→テキストエディタ起動→貼り付け→ファイル名を現在の日時にして保存 とし続けておりますが、この作業が非常に手間なのと、つい再実行してしまい履歴を残し損ねてしまう事が時々あります。  実行中にテキストファイルに都度1行ずつ書き込むのではアプリケーション実行速度自体が遅くなるため、最後にまとめて手動で保存している次第でございます。 (↑マイクロ秒オーダーでの実行速度の確認をConsole.WriteLineで確認するなどしております)  どうにかして自動化できるよい方法はございませんでしょうか?  もしお詳しい方がいらっしゃいましたら、何卒よろしくお願いいたします。

  • DLLを出力する位置の指定方法は?

    Visual Studio 2010 を使用して簡単なシステムを作っております ソリューションはMySystemと名付けました メインプログラムはC#で開発しており、MySystem_MAINといいます そのほかにDLLもありC++で開発しており、MySystem_DLLといいます MAINは『暗黙の指定』でDLLを呼びます 従ってDLLの出力はMAINと同じ位置にしようと思い、次のように指定しました (1) DLLのプロパティ ⇒ 構成プロパティ ⇒ 全般 ⇒ 出力ディレクトリに以下のように指定しました G:\Projects\MySystem\MySystem_MAIN\bin\Debug\ (2) DLLのプロパティ ⇒ 構成プロパティ ⇒ リンカー ⇒ 出力ファイルに以下のように指定しました G:\Projects\MySystem\MySystem_MAIN\bin\Debug そこでソリューションのリビルトを実行すると以下のWarningが出ます TargetPath(G:\Projects\MySystem\MySystem_MAIN\bin\Debug\MySystem_DLL.dll) が Linker の OutputFile プロパティ値 (G:\Projects\MySystem\MySystem_MAIN\bin\Debug) と一致しません。このため、プロジェクトが正常にビルドされない可能性があります。この問題を解決するには、$(OutDir)、$(TargetName)、および $(TargetExt) の各プロパティ値が、%(Link.OutputFile) で指定されている値と一致することを確認してください。 そして結局リビルトは失敗に終わります DLLはMAINのところには出来ず、G:\Projects\MySystem\MySystem_DLL\bin\Debugのところに出来ています 失敗の原因はここにあると思います どのようにすればMAINと同じ位置にDLLを出力できるでしょうか? 色々調べましたが分かりません、是非ご指導願います

  • VBAからDLL呼び出し

    vbaからC++で作成したDllファイル内関数を呼び出し、使用しているのですが、dllファイル内に記述してあるprintfが出力できません。 何か良い方法があるのでしょうか?

  • DLLのライセンス

    VisualStudiの開発環境で参照の追加から c:\windows\system32\hnetcfg.dll を指定したところ、プロジェクトの出力フォルダに Interop.NATUPNPLib.dll, Interop.NETCONLib.dll, Interop.NetFwTypeLib.dll ができました。実行ファイルと、これらのDLLファイルが一緒になって動作するようです。 そこで、実行ファイルとこれらのファイルを一緒に配布しようと思うのですが、 【1】これらのファイルを配布することはライセンス上問題ないのでしょうか?(hnetcfg.dllはWindowsXPに標準で入っているdllだと思います)あるいは、ライセンスについてどこを見れば/どこに問い合わせればよいのでしょうか? 【2】もし、ライセンス上問題がある場合、c:\windows\system32\hnetcfg.dllを実行ファイルが参照すればよいと思うのですが、それを参照するように設定することは可能でしょうか? 一般に.NetではこのようなDLLが実行ファイルと一緒のフォルダに置かれると思うのですがそれらのライセンスも同じだと思うのですが、どのようになっているのでしょうか? いろいろわからないことだらけです。よろしくお願いします。

  • Visual C++での出力ログの設定

    VisualC++2008で「デバッグなしで実行」をした際、出力ログに「一度も使用されていない変数があります」の警告が出てこなくなってしまったのですが、これを表示できるようにするにはどのように設定すればよいのでしょうか。

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

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

  • VC++で作成したDLLについて

    すみません、 VC++6.0で作成したDLLについて教えていただきたいのですが。 TEST_A.DLLというDLLと、TEST_B.DLLというDLLファイルを作成したとして これをC:\TEST\DLL\に格納してるとします。 このとき、TEST_B.DLLからはTEST_A.DLLの関数を呼び出しています。 次に、TEST_B.DLLの関数を使用しているTEST.EXEという実行ファイルを VB6.0で作成します。 このファイルをC:\TEST\EXE\に格納します。 そして、TEST.EXEを実行すると、 「TEST_B.EDLLが見付かりません」と言って怒られてしまいます。 VBでは、TEST_B.DLLをフルパスで指定しております。 しかし、TEST_A.DLLをEXEと同じ場所に置いてあげると 正常に動きます。 これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? TEST_B.DLLの設定がおかしいのでしょうか? それとも、TEST.EXEでもTEST_A.DLLをフルパス指定してあげないといけないのでしょうか? ちなみに今回、プロジェクトマネージャーから「環境変数(PATH)の設定はしたくない」と言われていますので、PATHの指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?

  • ログ出力方法

    つい先日からjavascriptの勉強を始めた初心者です。 javascriptのデバッグを行いたく、都度の変数の内容を確認できるよう コード内の任意の場所でログファイルを出力する 標準ライブラリを作成したいのですが、 javascriptでテキスト操作のようなものはできますでしょうか。 瞬間瞬間の動きを確認したいのですが、alert()メソッドの使用が出来ない環境です。 ログ出力でなくても、確認をとれる方法であれば構いません。 解りづらい部分ありましたら補足しますので、 どうぞよろしくお願いいたします。

  • SQLServer・ストアドプロシージャでファイル出力したい

    こんにちは、いつもお世話になります。 今回はじめてストアドプロシージャというものをプログラムしているのですが、デバッグの方法がよくわかりません。 したい処理は練習として「あるテーブルのデータを検索し、その結果をCSVに出力する」という簡単なものなのですが、クエリアナライザで実行すると「コマンドは正常に終了しました。」というメッセージが出ているにもかかわらず出力されるべきテキストファイルはまったく存在しません。 そこでクエリアナライザのオブジェクトブラウザから該当ストアドプロシージャを選択し、右クリックのメニューで出てくる「デバッグ」という機能を試してみたのですが、そうすると以下のエラーメッセージが出てきました。 ODBC: メッセージ 0、レベル 16、状態 1 [Microsoft][ODBC SQL Server Driver][SQL Server]DLL mssdi98.dll がロードできないか、参照している DLL の 1 つがロードできません。理由 : 126(指定されたモジュールが見つかりません。)。 ・・・意味が良くわからない上に、何行目でエラーになっているのかもわかりません。ためしにある変数に値をセットする一行目以外すべてコメントにして実行してみたのですが、同じメッセージが表示されます。 ・・・おそらく、ストアドプロシージャを実行する前から何らかの理由でエラーになっていると思うのですがこの現象についておわかりの方いませんでしょうか?