トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

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秒)