- ベストアンサー
defファイルの序数って何でしょう?
現在、VC++でDLLを作成し、そのDLLを使ってVBから関数を呼び出しているのですが、DLL開発についてわからないことがあります。 色々調べた結果、DLL作成時にdefファイルが必要である。 ということまではわかっているのですが、 defファイルの記述として行う「序数」がいまいちわかりません。 調べたものによると 「DLLのファイルサイズが小さくなる」 「新しく関数を追加するときは大きな数値を与える」 などが書かれてありました。 いったい序数は何のために(どんなときに)使うものなのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
序数とはDLLの内部で何番目のエクスポート関数かを表しています。 また、序数によって、DLL内の関数を呼び出すこともできます。 defファイルは記述しなくても問題ないのですが、その場合、__delcspec(export)だけでエクスポートすると自動的に関数の装飾名と序数が付けられます。 DLLを作成した後で関数を追加した場合、旧来の関数の序数が変わってしまう事があり、そうなると、DLLを利用したクライアントをリビルドする必要性が出てきます。 これを防ぐために、序数を明示的に指定してやり、関数を追加しても序数が変わらないようにdefファイルを作成して序数を指定してやります。 こうすることによって、DLLに関数を追加してもDLLを差し替えるだけでクライアントから利用できるようになります。 DLLのビルド時にMAPファイルを作成関数の装飾名などが見れるのですが、関数の装飾名が自動的に付けられた場合、関数名が長くなるのでその分小さくなります。
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
VBから呼び出すということなので、その方面から説明を。 Declareで呼び出すAPIの宣言をする際に、defファイルで指定された序数を指定することもできます。 サイズが小さくなるというのは、長い関数名がそのままDLLに埋め込まれるよりは小さくなるという意味でしょう。
お礼
参考になりました。ありがとうございます。
お礼
ありがとうございます。参考になりました。