質問: visual studio 2015で、vc++プロジェクトのコード内で 「定義へ移動」を操作しているのに、「宣言に移動」の挙動に なることがあります。 同一プロジェクト内のソースを操作している時には問題は発生しなくて、 他のDLLプロジェクトのソースを、exeプロジェクトを開いたvisual studio で開いたりする際に発生していると思います。 おそらく、同一ソリューションにexeやdllプロジェクトを一緒くたに 入れれば現象は発生しないかもしれませんが、現状はexe, dllで別ソリューションになっています。 また、不可解にも、一度Ctrl + Shift + Fでdllのソースを探し当て、 exeソースを開いているvisual studioでdllソースファイルを一度開くと、 今度はexeソースから正常にdll内の関数にジャンプできたりします。 どうしてこのような現象が発生するかも含めて、「定義へ移動」操作で必ず定義に移動するようにする方法はありますか? また、上記が不可の場合にも回避策等ありましたら教えてください。 タグジャンプするためだけに、dllのvisual studioインスタンスを起動するのが手間です。
回答: 根本的解決にならない可能性がありますが。 「定義へ移動」でプロトタイプ宣言から どういう引数が必要で戻り値の型はなんだったか... というのを知るためでしょうか。 別のものだとしてもたぶんできます。 **方法1:** cppファイルでインクルードする際、相対パスで インクルードする。 例: ``` #include"../test/abc/(中略)/abc.h" ``` **方法2:** 必要なヘッダファイルを同じプロジェクトに入れて追加する。 この場合そのヘッダファイルは編集しないようにする。 (してもいいが、DLL側と違うために使えなかったりするかも。) **方法3:** プロジェクトに ヘッダファイルを追加する。 (ただし、方法2 とは違うやり方。) **方法4:** 方法2のコピペ版。 **方法5:** DLLのアクセス方法を 静的から 動的に変更する。 つまり、起動時リンクではなく、LoadLibrary関数等を使ってリンクする。 **方法6:** ヘッダファイルを自分で読む。 **方法7:** HTMLなりエクセルなり テキストファイルなりで DLL のクラスオブジェクトや 関数, 定数, 構造体等を記述しておいて、それを読む。 例: int func( void ); この関数は○○を行う関数である。 引数: void 戻り値: int ( 個数 ) ... MDSN でしたっけ? あれみたいに書いておく。