トップページ > コンテンツ > プログラミング入門 > C言語入門 > C言語その他 > ライブラリ

この部分は何となく調べただけなので、間違いが多いと思います。
自分用の備忘録として残していますが、実際に触れる機会があれば、
修正したいと思います。

ライブラリには静的ライブラリと動的ライブラリがあり、
前者はリンク時にexeに組み込み、後者は実行時にexeファイルに組み込まれる。
そのため、dll等は単体で配布可能だが、lib等はexeも共に添付しないと意味が無い。
また、dllはdll自体の関数群を書いたヘッダーとダミーライブラリ(インポートライブラリ,lib)等で構成されている。
プログラムがdllを利用するときはlibからリンクを調べてdllにアクセスする形を取る。
winmainとかdllmainといった関数等を作るとライブラリ作成できる。

LinuxとWindowsでは拡張子が異なり、以下のような関係性になっている。

ちなみにgcc環境での作り方を書いてみたが、Visual Stadioとか使った方が楽。

Linux Windows
静的 動的 静的 動的
a so lib dll
gcc -fPIC -c xx.cでオブジェクトファイル作成
(fPICは共有ライブラリ再配置の高速化のためらしい。
ar -rv ライブラリ名.a xxx.o yyy.oの形式でライブラリ作成を行うことができる。
ちなみにranlibとかもar同様に使えるらしい。ranlibはシンボルテーブルの削除
gcc -shared -Wl,-soname,libxxx.so -o libxxx.so gcc -shared -o yyy.dll yyy.o
defファイルを作成してからdllwrapでdll生成する方法もあるよう

gccでのリンクの貼り方はgcc -o xxx xxx.c -lライブラリ名という感じのようだ。
dlltoolやdllwrap,reimp,dumpbin等についても確認しておきたい。

最終更新:2011年04月02日 17:06