VC PlusPlus:DLLのデバッグRegsvr32登録して使うタイプの場合Windows10 64bitのソースを表示
新しいページはコチラ
移動:
案内
,
検索
== '''概要''' == Deskbandのdllのサンプル(https://docs.microsoft.com/en-us/samples/microsoft/windows-classic-samples/deskbands/)を入手したのですが、どうやってデバッグするかわかりませんでした。今回の場合はregsvr32から呼び出されるタイプだったのですが、その他のdll呼び出しメカニズムを使っている場合は、ここで紹介する例だけでは、対応できないです。アタッチがキーワードになると思います。 まずは、dllを動作させる方法を知っているとして、呼び出し元がよくわからない場合はdllのプロジェクトのDllMain関数に以下のプログラムを追加すると良いでしょう。 ヘッダ追加と名前空間の設定 <syntaxhighlight2 lang="cpp"> #include <tlhelp32.h> #include<iostream> #include<fstream> using namespace std; </syntaxhighlight2> プログラム部 <syntaxhighlight2 lang="cpp"> WCHAR wcpBuff[256]; WCHAR wcpGetModuleFileNameBuff[256]; HMODULE hModule = NULL; std::wofstream outputfile2("test.txt", ios::trunc); outputfile2.close(); std::wofstream outputfile("test.txt", ios::app); outputfile.imbue(std::locale("", LC_CTYPE)); GetModuleFileName((HMODULE)hModule, wcpGetModuleFileNameBuff, 256); wsprintf(wcpBuff, L""); wsprintf(wcpBuff, L"■GetModuleFileName = %ls\n", wcpGetModuleFileNameBuff); outputfile << wcpBuff; </syntaxhighlight2> 上記のプログラムを追加すると、test.txtファイルにプログラムファイル名が記述されます。アタッチするとよいでしょう。自分はDLLのプログラムを作ったことないし、サンプルもまだ入手したことないです、アタッチのやり方は知らないので、よくわからないですけど、ここまで分かってたら、きっとうまく行きます。 今回のサンプルだとregsvr32に登録して使うタイプだとなっているので、コマンドプロンプトで「regsvr32 DeskbandSDKSample.dll」で登録すると以下のようなメッセージが受け取れます。管理者権限のコマンドプロンプトである必要があります。dllのあるディレクトリパスもちゃんと合わせないと駄目ですよ。カレントディレクトリを移動するか、パス付きでdll名を指定するかですね。 ■GetModuleFileName = C:\WINDOWS\SysWOW64\regsvr32.exe そうすると、これは間違いなくregsvr32から呼び出されてますね。 この場合、以下のような手順で、デバッグ作業が始められます。 1.Visual Studio 起動アイコンを右クリックして管理者として実行。プロジェクトを開く 2.プロジェクトのプロパティダイアログを開く :左の領域のTreeでDebugを選択する。 ::コマンド = C:\WINDOWS\SysWOW64\regsvr32.exe ::コマンド引数 = $(OutDir)$(TargetName)$(TargetExt) ::作業ディレクトリ = $(OutDir) ::その他の設定は規定値でいいよ。 3.デバッグ実行
VC PlusPlus:DLLのデバッグRegsvr32登録して使うタイプの場合Windows10 64bit
に戻る。
個人用ツール
18.220.244.188
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ