2つのプロジェクト(メインプロジェクトとテスト(googletest経由))を含むVisual Studioソリューションがあります。メインプロジェクトでは、myclass.cppとmyclass.hファイルがあります。テストプロジェクトをコンパイルしようとすると、test.cppファイルに "myclass.h"を含めるとLNK2019エラーが発生しますが、代わりに "myclass.cpp"を含めるとすべて正常に動作します。それは普通ですか?私の知る限りでは、.cppファイルの使用は推奨されず、一般的に避けられます。助言がありますか?Visual Studio:2つのプロジェクトソリューションに.hまたは.cppを含める
答えて
これは正常です。プロジェクトが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ファイルを生成しません。
助けてくれてありがとう、私は別の質問がある - 私のメインプロジェクトの両方の。 ?私が知る限り、生成されたファイルは構成プロパティーで指定されており、指定できるファイルのタイプは1つだけです。 –
@YuriyPogrebnyakはいできます。 'Linker - > General - > Output File'にexeを指定し、' Linker - > Advanced - > Import Library'にlibを指定します –
手順クラスを使用する別のプロジェクト(ヘッダとソルバーリンカエラーを追加)
1)が最初「プロパティ> C++>全般に行き、別のプロジェクトからヘッダを追加できるように形成>追加インクルードディレクトリ "とヘッダーを含むディレクトリを追加します。これで、他のプロジェクトのクラスのヘッダーを追加できますが、プロジェクトを実行するとリンカーエラーが発生します。
2)他のプロジェクトに使用しているクラスの前に_ _declspec(dllexport)を追加します。これは、そのクラスのヘッダファイルに追加することができます。これは、関数、変数、またはクラス名の直前に追加する必要があります。今度はlibファイルを取得します。
3)"プロパティ]> [リンカ]> [追加のライブラリディレクトリ":(https://msdn.microsoft.com/en-us/library/eehkcz60.aspx間違った場所に配置された場合は、この警告を得ることができます)。生成されるlibファイルの場所を指定します。
4)"プロパティ>リンカ>入力>追加の依存関係":libファイルの名前を追加します。
- 1. Visual Studio 2010 Proにサブディレクトリを含める
- 2. .cppファイルを含める
- 3. main()Visual Studioの定義を含む2つのファイル?
- 4. CMake:ヘッダーファイルとソースファイルを使用しないVisual Studioフィルターを適用し、ソリューションルートにcppとhファイルを入れます
- 5. Visual Studio 2008にcppファイルを追加するには?
- 6. ActiveMQの-CPPおよびVisual Studio 2003
- 7. メイクファイルに.hドキュメントを含める方法
- 8. は私が私のcppファイルでこれを含めたいのcppファイル
- 9. Visual StudioのWebサイトにuglifiedファイルを含める
- 10. Visual Studio 2010に自動的にクラスを含めるためのショートカットはありますか?
- 11. Visual Studioにはヘッダーファイルを含めることはできません。
- 12. .c、.cpp、.hファイルを持つプロジェクトにcscopeを使用するには?
- 13. Visual Studio 2010プロジェクトに外部ライブラリを含める
- 14. Visual Studioにライブラリアンで.pdbファイルを含める
- 15. Visual Studio 2010 - プロジェクトに含める数百のイメージを含むWebサイトプロジェクト
- 16. ファイルを見つけるためのビジュアルスタジオオートコンプリート? Visual Studioで
- 17. .cppファイルにライブラリを含めるときは?
- 18. Visual Studio 2005プロジェクトには、Visual Studio 2010で構築されたDLLが含まれています
- 19. は、Visual Studio 2013のためのブレンドを得るためにどのようエクスプレス
- 20. Microsoft Visual Studio C++ 2008ディレクトリとライブラリファイルを含める場所
- 21. Visual Studio 2015 - c/C++のプロパティはありませんが、ファイルはcpp
- 22. プライベートデータのヘッダーだけを.hファイルに含めます。
- 23. 別々の.hファイルと.cppファイルを使用したブーストシリアル化
- 24. 2つのダイナミックアレイを持つVisual Studioデバッガビジュアライザのヘルプ
- 25. クリックイベントを.h(デザイナーコード)から.cppファイルに区切ります
- 26. .hと.cppファイルの間にメソッドを配置する
- 27. .hファイル内または.cppファイル内でのクラスの実装の違い
- 28. 1つのHTMLに2つのiframeを含める
- 29. Visual Studio(LNK2001)の同じソリューションに別々のプロジェクトからのファイルを含める?
- 30. アップデート2のVisual Studio Community 2015のインストールに失敗しました
あなたのmain.cppは同じプロジェクトに存在する必要があります。 プリコンパイル済みヘッダーを使用していますか? – Rps
実際には、私は2つの主な機能を持って、2つの.exeファイルを生成したい - 私のための1つは、テスト用 –