DLL
DLL
最終更新時間:2006年11月12日 11時44分12秒
VisualStuido2003 C++でのDLLの使い方
使い方
.dllファイルと.libファイルを使用する。
- 1.__declspec(dllimport)文でメソッドをインポート
- 2. .libファイル(インポートライブラリ)のパスを指定
プロジェクトのプロパティからリンカ全般→追加のライブラリディレクトリでlibのあるディレクトリ指定。入力→追加の依存ファイルでlibファイル名指定
wchar_t型で未解決の外部シンボル エラー
DLL使用側で/Zc:wchar_tオプション(wchar_tをビルトイン型として扱う)がついていると「未解決の外部シンボルエラー」が発生することがあります。/Zcを外すか、DLLを/Zc付きでコンパイルする必要があります。(DLLと使用側の両方を/Zc有りor無しで揃えれば良い。)
http://www.microsoft.com/japan/msdn/library/ja/vccore/html/vclrfatlcompatibilityissues.asp
VisualStuido2003 C++ での作り方
- 1.新規プロジェクトからWin32プロジェクトを選択
※MFCDLLから作成してもいいが、余分なファイルが加わるので気分的に嫌。
- 2.表示されるウィザードで、アプリケーションの設定をDLLに、空のプロジェクトチェックボックスにチェック。
- 3.プロジェクトのプロパティでプロジェクトの規定値が「ダイナミックライブラリ」「標準Windowsライブラリを使用する」になっていることを確認。
- 4.バージョン情報の作成
右側のソリューションエクスプローラから、リソースファイルフォルダを選択して右クリック、新しい項目の追加。.rcファイルを選択。追加されたrcファイルからリソースビュー画面を表示し、右クリックからリソースの追加、バージョンを選択して新規作成
- 5.headerファイル、sourceファイルを追加
ちょっと便利な技
#ifdef PROVIDER #define __DECLSPEC __declspec(dllexport) #else #define __DECLSPEC __declspec(dllimport) #endif __DECLSPEC bool HogeConstruct(); __DECLSPEC bool HogeDestruct();
という風に書いて、 作成側のプリプロセッサでPROVIDERをdefineするとexport、使用側はdefineしなければimportできる。
Comment
- wchar_t だけじゃなくて、crt の設定とか、他にもいろいろ揃えなきゃいけないものがある希ガス。 - amano (2006年02月03日 12時57分36秒)