cwnicol programming

プログラミング関連の投稿をすこしだけ

ライブラリ

まとめきれていない部分もあるかもしれないが、

とりあえず現時点でライブラリについて分かったことを記す。

 

名称 動的ライブラリ 静的ライブラリ
方式

レイトバインディング
(遅延バインディング
実行時バインディングとも)

アーリーバインディング
(事前バインディングとも)
Windows *.dll(*1)
(DLL・ダイナミック
リンキングライブラリ)
*.lib(*2)
(スタティックライブラリ)
Linux *.so
(共有ライブラリ)
*.a
(スタティックライブラリ)

 

(*1)

暗黙的なリンク ・インポートライブラリ(*.lib)を使用。
 (拡張子がスタティックライブラリと被ってる)
・__declspec(dllexport)を使用。
明示的なリンク win32apiのLoadLibrary,GetProcAddress,FreeLibraryを使用。

 また、プロジェクトの文字セットはマルチバイト文字を指定のこと。

Unicode指定だと、LoadLibrary()でエラーコード:126となる。

 

(*2)

たぶん、__declspec(dllexport)を使用。

 

・・・全体として、ライブラリ側は__declspec(dllexport)を使用、

呼び出し側は__declspec(dllimport)を使用。なのかも知れない。

Linuxの方は未確認。

 

【参考】
http://exlight.net/devel/windows/dll/windll.html