短い質問はどのようにVisual Studioを使用して、異なるディレクトリにソースコードを持つプロジェクトを作成/コンパイル/実行することができますか?ここで別のディレクトリのヘッダーを含めるとVisual Studioのリンクエラーが発生する
具体的な詳細は以下のとおりです。
私は1つのディレクトリにクラス定義ファイル(.HPP)と実装ファイル(.CPP)を持っていると私は別のディレクトリにあるmain.cppにファイルを持っています。 Visual Studio 2008では、新しいプロジェクトを作成し、そのプロジェクトにmain.cppを配置しました。追加のインクルードディレクトリにクラスファイルディレクトリを追加しました(プロジェクト - >プロジェクトプロパティ - >設定プロパティ - C/C++ - 一般 - >追加インクルードディレクトリ= C:\ Test \ cpp)。
これを行うと、intellisenseはmain.cppを編集するときに正常に動作します。私はプロジェクトをビルドすると、それが正常にコンパイルが、私のようなリンクエラーを取得:
がエラーLNK2019:未解決の外部シンボル?「パブリック:int型__thiscallテスト::(int)を追加し、」(テスト@追加します@@ QAEHH @ Z)を参照してください。
Visual Studioは実際にはTest.cppをコンパイルしていません(私には作成されている.objファイルはありません)。コンパイル/ビルドmain.cppの前に、私はそれをコンパイルしようとしましたが、それは何の違いもありませんでした。これを回避する方法はありますか?ウェブで回答を検索すると、多くの人がリンカーにライブラリを含めるのを忘れていますが、私はライブラリを扱っていません。
このコードは、Test.hppとTest.cppをmain.cppと同じディレクトリに移動することでコンパイルと実行が正常に実行されたことを確認しました。これは問題なく動作しました。私はちょうどその設定に固執するが、私は私が取り組んでいるプロジェクトのために別のディレクトリからのソースを使用できるようにする必要があります。
C:\テスト\ CPP \ Test.hpp
#ifndef TEST_H #define TEST_H class Test { private: int mynum; public: Test(); int add(int num); }; #endif //TEST_H
C:\テスト\ CPP \ Test.cppの
#include "Test.hpp" Test::Test() { mynum = 0; } int Test::add(int num) { return mynum += num; }
ここ
C:\ Visual Studio Projects \ MyProject \ main.cpp
#include <iostream> #include <Test\Test\Test.hpp> int main(int argc, char *argv[]) { Test test; std::cout << "Add 5 = " << test.add(5) << std::endl; return 0; }
は、3つのファイルがあります
私が言及したように、私はTest.hppとTest.cppをこの単純なもののためにプロジェクトに追加することができましたが、それほど簡単ではない他のプロジェクトもあります。たとえば、サーバー/中央ソース管理リポジトリに格納されているコードを使用するローカルマシン上のプロジェクトを作成します。 –
あなたはまた、「私はどのライブラリも扱っていません」と述べました。複数のプロジェクトでコードを再利用したい場合は、dpiskyulevのように共通コードを.dllまたはライブラリとしてコンパイルすることをお勧めします。 –
複数のディレクトリから1つのプロジェクトにインポートするのを止めるには何もありません。それは、「私はその設定に固執しますが、私が作業しているプロジェクトに異なるディレクトリのソースを使用できる必要があります。 。プロジェクト設定でディレクトリを入力するときに、ディレクトリ間に ';'を付けるだけです。 –