質問

私がやりたいことをすぐに説明しよう:

依存関係としてもう1つを持つ静的ライブラリを使用するプロジェクト。 MyLib2にリンクするMyLib1にリンクするMyProjectというプロジェクトを生成します。 コンパイル順序は次のとおりです。

  • MyLib2
  • MyLib1(MyLib2にリンク)
  • MyProject(MyLib1にリンク)

Visual Studio 2008を使用していますが、インクルードの定義に問題があります。 リンクするとき、プロパティ「追加のインクルードディレクトリ」を使用します。 (プロジェクトプロパティC / C ++ノード上)。 これはMyProjectとMyLib1の間で機能しているようですが、MyLib1とMyLib2では機能していません。 例:MyLib2にfoo.cppというファイルがあります。 #include" foo.cpp"の使用foo.cppが不明である(ファイルまたはフォルダーがない)ことをVisual Studioに通知します。

それが間違ったパスではないことを確認するために、次のような多くの試みをしました:コマンドライン(ライブラリをコンパイルするために使用)に示されているパスをwinエクスプローラーにコピーして貼り付けます: 2番目のライブラリ。私は何度もプロジェクトを作り直しましたが、毎回異なる名前を使用し(これに注意を払わせました)、すべてが明確に定義されているように見えます(ただし「含む」ではありません)。

実際に機能させる唯一の方法:#include " c:\\ foo.cpp" をインクルードとして使用...移植性に非常に優れています!

これを自分でテストして問題点を教えてくれるソリューションのZipです。 MyProject.rar

手伝ってくれてありがとう! ルーシベラド

役に立ちましたか?

解決

最初に、*。cppファイルを含めないでください。

次に、外部関数の前方宣言を使用します:

void appellib2(void);

void appellib1(void)
{
    appellib2();
}

3番目に、ソリューションエクスプローラーで各プロジェクトを右クリックし、[プロジェクトの依存関係...]を選択します。および適切な依存関係のセットアップ:MyProject-> MyLib1-> MyLib2。

最後に、MyProjectのプロパティで、追加の依存関係MyLib1.libを設定します。

エラーなしでプロジェクトをビルドして実行できます。

更新

リンクの問題を解決するためだけに* .cppを* .hに名前変更しないでください。 * .hファイルに定義がある場合、それを2回以上含めることはできません。

プロジェクトは YourProject.rar です。

他のヒント

.cppを.hに変更しました。私はCPPファイルを決して含めないことを知っていますが、それはテスト目的のためでした。

各関数のプロトタイプを追加しましたが、うまく機能しません(ファイルmylib2.cppが含まれていないため、プロトタイプは優れていますが、このテストでは有用ではありません)。

プロジェクトの依存関係を設定しました。それでも失敗します。

MyProjectにMyLib1.libの追加の依存関係を設定しました(これは次のエラーであり、リンクエラーが発生する可能性があります)。

これらの修正を行っても、mylib2.hエラーが含まれています:そのようなファイルまたはディレクトリはありません。

新しいアーカイブは次のとおりです。 MyProject.rar

機能するように連絡する場合、機能するソリューションのアーカイブを作成してもらえますか?

ありがとう、 Lucyberad。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top