2012-04-01 12 views
1

2つのプロジェクト(メインプロジェクトとテスト(googletest経由))を含むVisual Studioソリューションがあります。メインプロジェクトでは、myclass.cppとmyclass.hファイルがあります。テストプロジェクトをコンパイルしようとすると、test.cppファイルに "myclass.h"を含めるとLNK2019エラーが発生しますが、代わりに "myclass.cpp"を含めるとすべて正常に動作します。それは普通ですか?私の知る限りでは、.cppファイルの使用は推奨されず、一般的に避けられます。助言がありますか?Visual Studio:2つのプロジェクトソリューションに.hまたは.cppを含める

+0

あなたのmain.cppは同じプロジェクトに存在する必要があります。 プリコンパイル済みヘッダーを使用していますか? – Rps

+0

実際には、私は2つの主な機能を持って、2つの.exeファイルを生成したい - 私のための1つは、テスト用 –

答えて

2

これは正常です。プロジェクトが2つある場合、2つのバイナリが生成されます。

のcppファイルを含めないでください。

代わりに、バイナリをリンクしてください。

メインプロジェクトは - .libファイルと.dllまたは.exeのいずれかを生成します。

テストプロジェクト - mainのヘッダーを含みます。テストプロジェクトの追加の依存関係にmainによって生成された.libを追加する必要があります。プロジェクト設定 - リンカオプション - 追加の依存関係のどこかにあります。


あなたは、単一のプロジェクトから .exeファイルとの.libファイルの両方を生成することができます。あなたが設定されたこの行うには:Linker -> Advanced -> Import Library

  • は、exeファイル libに
  • Linker -> General -> Output File中をまたEXEプロジェクトで__declspec(dllexport)でエクスポート関数をマークする必要があるかもしれません(docsを参照してください)それ以外の場合、コンパイラは.libファイルを生成しません。

+0

助けてくれてありがとう、私は別の質問がある - 私のメインプロジェクトの両方の。 ?私が知る限り、生成されたファイルは構成プロパティーで指定されており、指定できるファイルのタイプは1つだけです。 –

+1

@YuriyPogrebnyakはいできます。 'Linker - > General - > Output File'にexeを指定し、' Linker - > Advanced - > Import Library'にlibを指定します –

1

手順クラスを使用する別のプロジェクト(ヘッダとソルバーリンカエラーを追加)

1)が最初「プロパティ> C++>全般に行き、別のプロジェクトからヘッダを追加できるように形成>追加インクルードディレクトリ "とヘッダーを含むディレクトリを追加します。これで、他のプロジェクトのクラスのヘッダーを追加できますが、プロジェクトを実行するとリンカーエラーが発生します。

2)他のプロジェクトに使用しているクラスの前に_ _declspec(dllexport)を追加します。これは、そのクラスのヘッダファイルに追加することができます。これは、関数、変数、またはクラス名の直前に追加する必要があります。今度はlibファイルを取得します。

3)"プロパティ]> [リンカ]> [追加のライブラリディレクトリ":(https://msdn.microsoft.com/en-us/library/eehkcz60.aspx間違った場所に配置された場合は、この警告を得ることができます)。生成されるlibファイルの場所を指定します。

4)"プロパティ>リンカ>入力>追加の依存関係":libファイルの名前を追加します。

関連する問題