1

私はこれをしばらくの間機能させようとしてきましたが、他の場所で答えを見つけることができません。ここに私の問題があります。

Visual C++ で静的ライブラリを作成すると、このライブラリが使用するすべての依存関係が、ライブラリをリンクする実行可能プログラムに引き継がれます。ここに例があります

Test.lib 依存 - SDL - OpenGL

TestApp.exe リンク Test.lib

Visual C++ では、TestApp 実行可能ファイルに Test.lib の依存関係を追加する必要はありません。それらは引き継がれ、うまく機能します。

ただし、コードを Linux g++ (Code::Blocks IDE を使用) に移植する場合、g++ で .a であるスタティック ライブラリを作成し、ライブラリをリンクする TestApp を作成すると、依存関係への未定義の参照が取得されます。

g++ はこれを行うことができますか?もしそうなら、依存関係を実行可能ファイルに引き継ぐために何が欠けていますか?

ライブラリの設定に関しては、IDE の静的ライブラリ設定を使用するだけです。

4

2 に答える 2

1

Microsoftのコンパイラを使用すると、ヘッダーファイルにライブラリの依存関係情報を含めることができます(ソースファイルも含まれますが、これは通常、ヘッダーで行われます)。これはオブジェクトファイルにコンパイルされ、リンカはその情報を理解して適用します。これは便利です。長くてファンキーな名前を覚えておく必要はありません。互換性のないオプションを使用して2つのソースファイルをコンパイルすると、リンカが文句を言うライブラリ名の競合が発生する可能性があります。ほとんどのコンパイラとリンカはこの種のことを行わないため、リンクするライブラリをリンカに明示的に指示する必要があります。

于 2012-09-14T12:14:55.523 に答える
0

静的ライブラリは、他のライブラリと静的にリンクしません。そうですか?ただし、 arと呼ばれるツールを使用して、多くのオブジェクト ファイルをまとめることができます。

Windowsで何が起こるかは、おそらくシステムenvパスのどこかに(SDL、opengl32)dllがあるためです。

于 2012-09-14T01:57:00.333 に答える