3

私はSFMLを使用しており、Code::Blocksとmingw32でアプリケーションを構築しています。プロジェクトにSFMLライブラリ(sfml-whatever.a)を追加しましたが、正常に動作します。

しかし、iIrc、静的ライブラリは実行可能ファイルに「コンパイル」されます。もしそうなら、Code :: Blocksの外で実行するために、実行可能ファイルの隣にすべてのSFML DLLを配置する必要があるのはなぜですか?そして、Code :: Blocks内からプロジェクトにDLLを何らかの形で「動的にリンク」した場合(その方法はわかりません)、実行可能ファイルをすべての.aファイルとともに出荷する必要がありますか?正しく実行するには?

事前のおかげで、私は静的または動的なライブラリに精通していません。違いがある場合は、Ubuntu linuxで作業しており、クロスコンパイルにmingw32を使用しています。

4

2 に答える 2

6

SFMLを使用すると、上記のコメントに記載されているように、ライブラリに静的にリンクできます。このようにして、すべてが実行可能ファイルにコンパイルされ、DLLと一緒に出荷する必要はありません。これがどのように行われるかは、SFML1.6または2.0のどちらを使用しているかによって異なります。

1.6ではプリプロセッサ定義は必要ありませんが、2.0では、コンパイラにcmakeを使用してソリューション/メイクファイルを作成SFML_STATICし、プリプロセッサ定義で#defineを作成する必要があります。

于 2011-09-04T07:24:44.023 に答える
2

この場合、静的ライブラリには動的ライブラリに接続するコードが含まれているだけであり、実際のライブラリコードではありません。

于 2011-05-18T23:16:46.080 に答える