2011-07-26 35 views
2

複数のWin32 Cプロジェクトを1つの.libファイルに結合したい。複数のVS2010プロジェクトを1つの.libファイルに結合する

OS:WindowsのXP SP3 IDE/Comipler:Visual Studioの2010

今、私はすべての他のプロジェクトを参照する1つの親プロジェクトを持っています。しかし、参照されているプロジェクトの関数やグローバルはすべて含まれていないか、公開されていないので、ライブラリを使用すると「未解決の外部」エラーが発生します。 親プロジェクト内の関数は正しく機能します。

どうすればよいですか? ...


は、プロジェクトを参照するためのいくつかのオプションがありますが、それらのどれもさえ/


は何も影響はありませんLINK.EXEでオプションを含め私の問題解決するように見えるん

+0

@ おかげで、それは、静的libにある私の要件に合いますか?最も単純な方法は、すべてのcファイルを親プロジェクトに追加することです –

+2

あなたの子プロジェクトがすべて静的ライブラリ '.lib'を生成する場合は' lib /out:lib_all.lib lib1.lib lib2.lib'を試すことができます。 'lib.exe'は**(あなたのVCインストールパス)\ bin ** – Stan

+0

@Stanにあります。それは答えを構成する。なぜそれを1つとして投稿しないのですか? – Clifford

答えて

0

他のプロジェクトから1つのプロジェクトを参照するだけで、あるプロジェクトを他のプロジェクトの依存関係として構築するだけで、それが明示的に別のプロジェクトの出力をリンクすることはありません。

ライブラリが最初にコンパイルされるようにプロジェクトの依存関係を設定してから、そのプロジェクトの出力(スタティックライブラリまたはDLLプロジェクトの場合はエクスポートライブラリ)をリンカの「追加ライブラリ」に明示的に追加する必要があります。リスト。

Microsoft Library Managerを使用して複数のライブラリを1つに結合することをお勧めしますが、それ自体は問題の解決策ではありません。実行可能ファイルを作成するために上記のようにライブラリを明示的にリンクする必要があります - いくつかの代わりに1つだけあります - 機能が密接に関連していない限り、そこには多くの点がありません。彼らはなぜ最初の例では1つのプロジェクトではないのですか?

コマンドラインツールを使用している場合、/INCLUDEリンカオプションは役立たず、参照されていないオブジェクトコードをリンクに含めるだけです。

3

最後に、libコマンドをmakeイベント(Post-Buildイベント)として定義しました。 libに/out:out.lib in1.lib lin2.lib ...

それは悪いポータブルですが、スタン

関連する問題