• 締切済み

関数やクラスの相関関係を表示させるにはどうしたらよいでしょうか。

関数やクラスの相関関係を表示させるにはどうしたらよいでしょうか。 プログラミング初心者です。いつもお世話になっております。 C++を用いて関数の静的な呼び出しツリーやクラスの継承関係などを表示するために、 Browser Toolkits for Microsoft Visual C ++のbsckit70.exeをダウンロードし試行錯誤しております。 http://www.microsoft.com/downloads/details.aspx?FamilyId=621AE185-1C2A-4D6B-8146-183D66FE709D&displaylang=en bscファイルにより関数呼び出しツリ-を作成するツールだそうです。 exeファイルを実行すると得られる[bscsdk>samples>bd-cxx>bd.cpp]を、visual studioで [ファイル>新規作成>既存のコードからプロジェクトを作成]から選択しプロジェクトを立ち上げました。 そして同梱されているbsc.hファイルをプロジェクトに追加し、ビルドしたところ以下のエラーが出てきました。 --略-- 1>cl : コマンド ライン warning D9035 : オプション 'Wp64' の使用は現在推奨されていません。今後のバージョンからは削除されます。 1>bd.cpp 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C2146: 構文エラー : ';' が、識別子 'ContextRecord' の前に必要です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(5545) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11263) : error C2065: 'PCONTEXT' : 定義されていない識別子です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11264) : error C2146: 構文エラー : ')' が、識別子 'ContextRecord' の前に必要です。 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(11264) : warning C4229: 旧形式が使用されています : データの修飾子は無視されます。 -略- winnt.hの該当部分が以下になります。 5543 typedef struct _EXCEPTION_POINTERS { 5544 PEXCEPTION_RECORD ExceptionRecord; 5545 PCONTEXT ContextRecord; 5546 } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS; 11258 #if (NTDDI_VERSION > NTDDI_WIN2K) 11259 NTSYSAPI 11260 VOID 11261 NTAPI 11262 RtlCaptureContext ( 11263 __out PCONTEXT ContextRecord 11264 ); 11265 #endif ちなみにwinnt.hはbd.cppでは呼び出されておらず、bsc.hからwindef.hがincludeされ、windef.hからwinnt.hがincludeされていました。 何をどうすればToolkitが動くようになるのか見当がついておりません。いくつかエラーが出ていますが関連性がよく分からず、まとめて質問する形になってしまいました。またBrowserToolkitsよりも良い方法がありましたらご教授いただければと思います。よろしくお願いします。 [開発環境] WindowsXP(SP3) VisualStudio2008 C++

みんなの回答

  • zuntac
  • ベストアンサー率36% (45/124)
回答No.1

直接の回答ではないのですが、ドキュメント作成ツールなら以下が よく使われており使い方も比較的簡単かと思います。 http://www.doxygen.jp/ Doxygen ソースコード・ドキュメンテーション・ツール

borialis14
質問者

お礼

ありがとうございます。 参考にさせて頂きます。 もしC++でコードの構造を動的に得られるlibやAPIなど御存知でしたらご教授頂けますでしょうか。 よろしくお願いします。

borialis14
質問者

補足

進展があったので報告します。 インクルードしているbsc.hの冒頭に #include "windows.h" と書き加え、いくつかの操作を行った後ビルドが通りました。 皆様ありがとうございました。 【参考サイト】 http://www.abluestar.com/blog/winnt-h5545-error-c2146-syntax-error-missing-before-identifier-contextrecord/

関連するQ&A

  • 【VC++】 学校のプロジェクトを家で続けたい

    学校で使っているVisual Studio2010で使っているプロジェクト(ソリューション)を、家のPCのVisual C++ 2010 Expressで使いたいのですが、エラーが出てうまく移行できません。 家のPCをうまく設定して学校のPCと両方でプロジェクトを使いたいのですがどうすれば良いのでしょうか。 もしかすると、以前設定を変更してデフォルトの状態ではないかもしれません… //インクルード文 #include "DxAll3.h" //エラーメッセージ(抜粋) 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h : warning C4821: Unicode エンコードの種類を指定できません。シグネチャ (BOM) つきファイルを保存してください。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x4' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x6' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x2' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2018: 文字 '0x7' は認識できません。 1>C:\Program Files\Microsoft SDKs\Windows\v7.0A\include\driverspecs.h(1): error C2146: 構文エラー : ';' が、識別子 'Ntff' の前に必要です。 以下100エラーでコンパイル中断。

  • winpcapを用いたプログラミング

    visual c++ 2010expressを使ってます。 #include <stdio.h> #include "pcap.h" int main() { return 0; } これをコンパイルすると、 fatal error C1083: include ファイルを開けません。'sys/time.h': No such file or directory とエラーが出ます。 pcap.hの #if defined(WIN32) #include <pcap-stdinc.h> #elif defined(MSDOS) #include <sys/types.h> #include <sys/socket.h> /* u_int, u_char etc. */ #else /* UN*X */ #include <sys/types.h> #include <sys/time.h> #endif /* WIN32/MSDOS/UN*X */ の部分が原因だと思って #define WIN32 を付け加えると、エラーは出ませんでした。しかし、 #define WIN32 #include <stdio.h> #include <Windows.h> #include "pcap.h" int main() { return 0; } これでコンパイルすると下のようにエラーがでます。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: 'AF_IPX' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(460) : 'AF_IPX' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(131): warning C4005: 'AF_MAX' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(479) : 'AF_MAX' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(168): warning C4005: 'SO_DONTLINGER' : マクロが再定義されました。 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(402) : 'SO_DONTLINGER' の前の定義を確認してください 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(212): error C2011: 'sockaddr' : 'struct' 型の再定義 1> c:\program files\microsoft sdks\windows\v7.0a\include\winsock.h(485) : 'sockaddr' の宣言を確認してください。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C2059: 構文エラー : '定数' 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(390): error C3805: '定数': 予期しないトークン。'}' か ',' が必要です。 1>c:\program files\microsoft sdks\windows\v7.0a\include\ws2def.h(524): warning C4005: 省略 'pcap_pkthdr::ts' が 未定義の struct 'timeval' で使用しています。 原因は何でしょうか

  • VC++、windows.hのincludeエラー

    最近C++を勉強し始めたのですが出だしからつまづいてしまいました。 Visual Studio 2010 SP1 + Windows SDK 7.1 (OS:windows7 Professional 64bit版)を使用しているのですが、#include <windows.h> のみでビルドを行ったところ以下のように driverspecs.h でエラーが生じてしまいました。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2143: 構文エラー : ')' が '(' の前にありません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2091: 関数は関数を返せません。 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(356): error C2059: 構文エラー : ')' <中略> 1>c:\program files\microsoft sdks\windows\v7.1\include\driverspecs.h(699): fatal error C1003: プログラム内のエラーが 100 個を超えました。コンパイルは中断されます。 1> 1>ビルドに失敗しました。 以下に driverspecs.h ファイルのエラー部分を抜粋して載せておきます。 __ANNOTATION(SAL_functionClass(__in char *);) #define __drv_functionClass(x) \ __drv_out(__drv_declspec("SAL_functionClass(\""#x"\")")) まだ始めたばかりで知識も乏しく、どのように対処をしていいものか困っています。 何か解決の糸口になるようなヒントでも構いませんので教えて頂けると助かります。 よろしくお願いします。

  • OpenGLのGLUT機能の導入につて

    今回 VisualStudio 2008 C++ を使って OpenGL を使ったアプリケーション開発に挑戦中ですが、 GLUT 機能が必要になり 、サイト"Nate Robins - OpenGL" からダウンロードして、 Windows 7 の適切なシステムフォルダーに格納コピーしようと考えております。 ところが、 GLUT を格納コピーすべきフォルダーパスが判らず困っています。 使っているWindows 7 のそれらしいフォルダーパスを調べたうえで、 お尋ねしたい質問項目を下記いたしましたので、どうかご教示ください。 ***.lib ファイルの格納フォルダー opengl32.lib : C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64 glu32.lib : C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64 opengl32.lib : C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib glu32.lib : C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib glut32.lib : 質問3:上記のどちらに格納すればよいのでしょうか?          両方共にコピーすべきでしょうか? ***.h ファイルの格納フォルダー gl.h : C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\gl glu.h : C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\gl glut.h : 質問2:上記に格納して構いませんか? ***.dll ファイルの格納フォルダー opengl32.dll : C:\Windows\System32 glu32.dll : C:\Windows\System32 glu32.dll.mui : C:\Windows\System32\ja-jp opengl32.dll : C:\Windows\SysWOW64 glu32.dll : C:\Windows\SysWOW64 glu32.dll.mui : C:\Windows\SysWOW64\ja-jp glut.dll : 質問3:上記のどちらに格納すればよいのか?              両方共にコピーすべきでしょうか?         質問4:glu32.dll.mui はなくて構わないのでしょうか? 以上

  • VC++ 2010 Expressのエラー

    visual C++ 2010 Expressでビルドエラーが解消できません。 VC++初心者です。非常に困っているので、お答えいただきたいです。 ARtoolkitとkinectを使用するために、windows8(64bit)でvisual C++ 2010 Expressを使用し、ビルドをしようとすると fatal error C1083: include ファイルを開けません。'windows.h': No such file or directory このようなエラーが表示されます。同様にexcpt.h、sdkddkver.h、stdio.h、stdlib.h、crtdefs.hもincludeできないとエラーが表示されます。 これらのファイルは全てC:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include の中に存在したため、このディレクトリをインクルードディレクトリとライブラリディレクトリに追加すると、includeファイルを開けないエラーは解消するのですが、 fatal error C1189: #error : ERROR: Use of C runtime library internal header file. というエラーが表示され、検索してみたものの原因がわからずにいます。 また既にvisual C++2008でARtoolkitを動かせる状態にしてあることも影響はあるのでしょうか? 大変わかりずらい質問で恐縮ですがお答えいただきたいです。

  • bcrypt.h コンパイルエラー

    #define BCRYPT_DH_PARAMETERS_MAGIC 0x4d504844 // DHPM typedef __struct_bcount(cbLength) struct _BCRYPT_DH_PARAMETER_HEADER { ULONG cbLength; ULONG dwMagic; ULONG cbKeyLength; } BCRYPT_DH_PARAMETER_HEADER; の部分で、 1>c:\program files (x86)\microsoft sdks\windows\v6.0\include\bcrypt.h(326) : error C2065: 'cbLength' : 定義されていない識別子です。 と出るのですが、解決方法はありますか? OS:Win7  VC++2005 を使っています。 サンプルコードをコンパイルしています。 SDKs は v6.0 と v7.1 をダウンロードしてあります。 コンパイラを新しくするのが簡単とは思いますが、、、 よろしくお願いいたします。

  • C2146を回避するにはどうしたら良いのでしょうか

    いつもここにお世話になってますm(__)m。今回は下記の様なエラーが出てしまい、困っております(--;)。 <エラー内容> 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C2146: 構文エラー : ';' が、識別子 'PVOID64' の前に必要です。 1>C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include\winnt.h(222) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません エラーが起こっているのはwinnt.h内の「typedef void * POINTER_64 PVOID64;」という部分なのですが(他にもありますが)、winnt.hは弄ってないのです。 ネットで検索したところインクルードファイルディレクトリの指定の順番が怪しそうなので、「ツール」「オプション」でPlatformSDK関連が一番上に来るように変更(実行可能ファイル、インクルードファイル、ライブラリファイル)してリビルドしてみましたが結果は変わりませんでした。 他にチェックすべき点をお教え頂けると助かります。 [環境] ・WindowsXP(SP2) ・Visual Studio 2005 Professional(C++、SPなし)

  • WiiYourself!をコンパイルできない

    WiiYourselfをVisualStadio2008(visual C++)でDemoフォルダのソースをコンパイルしようとしたのですがコンパイルエラーが100個以上出て失敗してしまいました(ソースは入手したときのままです)。エラーは以下のとおりです。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(60) : error C2065: '_In_' : 定義されていない識別子です。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(60) : error C2144: 構文エラー : '_EXCEPTION_RECORD' は ')' によって先行されなければなりません。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(60) : error C2448: '_except_handler' : 関数の定義が間違っています。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(61) : error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(62) : error C2144: 構文エラー : '_CONTEXT' は ';' によって先行されなければなりません。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(63) : error C2144: 構文エラー : 'void' は ';' によって先行されなければなりません。 1>c:\program files\microsoft visual studio 9.0\vc\include\excpt.h(64) : error C2059: 構文エラー : ')' 1>c:\winddk\7600.16385.0\inc\api\windef.h(49) : error C2143: 構文エラー : ';' が '*' の前にありません。    ........ 開発環境は以下の通りです Windows vista WDM (インクルード(inc/api) ライブラリ(lib/wxp/i386)をvisual C++に設定している) WiiYourself1.01a とWiiYourself!_1.14b両方試しましたが同じ結果でした 原因をご存知の方がいらっしゃたらどうか書き込みお願いします。 よろしくお願いします。

  • winnetwk.hについて

    ネットワークプロバイダーのバージョンなどを表示されるプログラムを実行しようとしたのですが、以下のようなエラーがでて先に進めません。どうしたら直すことが出来るでしょうか? 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C2146: 構文エラー : ';' が、識別子 'dwScope' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(142) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C2146: 構文エラー : ';' が、識別子 'dwType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(143) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C2146: 構文エラー : ';' が、識別子 'dwDisplayType' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(144) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C2146: 構文エラー : ';' が、識別子 'dwUsage' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(145) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C2146: 構文エラー : ';' が、識別子 'lpLocalName' の前に必要です。 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(146) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 1>c:\program files\microsoft platform sdk\include\winnetwk.h(147) : error C2146: 構文エラー : ';' が、識別子 'lpRemoteName' の前に必要です。 環境はVC++2005です。

  • string.h内でエラー

    Visual C++ 2005でプログラムを組んでいます。 あるプログラムをビルドすると以下のようにstring.h内でエラーが大量に発生します。string.hをインクルードしないとエラーは出ないことからおそらくstring.hまわりの設定がおかしいとは思うのですがよくわかりません。 エラー 2 error C2144: 構文エラー : 'char' は ')' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 3 error C2144: 構文エラー : 'char' は ';' によって先行されなければなりません。c:\program files\microsoft visual studio 8\vc\include\string.h 136 エラー 5 error C2143: 構文エラー : ';' が ',' の前にありません。c:\program files \ microsoftvisualstudio8 \ vc\ include\ string.h 136 宜しくお願いします。

専門家に質問してみよう