プロが教えるわが家の防犯対策術!

現在、VC++でDLLを作成し、そのDLLを使ってVBから関数を呼び出しているのですが、DLL開発についてわからないことがあります。

色々調べた結果、DLL作成時にdefファイルが必要である。
ということまではわかっているのですが、
defファイルの記述として行う「序数」がいまいちわかりません。

調べたものによると
「DLLのファイルサイズが小さくなる」
「新しく関数を追加するときは大きな数値を与える」
などが書かれてありました。

いったい序数は何のために(どんなときに)使うものなのでしょうか?
よろしくお願いします。

A 回答 (2件)

序数とはDLLの内部で何番目のエクスポート関数かを表しています。


また、序数によって、DLL内の関数を呼び出すこともできます。

defファイルは記述しなくても問題ないのですが、その場合、__delcspec(export)だけでエクスポートすると自動的に関数の装飾名と序数が付けられます。
DLLを作成した後で関数を追加した場合、旧来の関数の序数が変わってしまう事があり、そうなると、DLLを利用したクライアントをリビルドする必要性が出てきます。
これを防ぐために、序数を明示的に指定してやり、関数を追加しても序数が変わらないようにdefファイルを作成して序数を指定してやります。
こうすることによって、DLLに関数を追加してもDLLを差し替えるだけでクライアントから利用できるようになります。

DLLのビルド時にMAPファイルを作成関数の装飾名などが見れるのですが、関数の装飾名が自動的に付けられた場合、関数名が長くなるのでその分小さくなります。
    • good
    • 0
この回答へのお礼

ありがとうございます。参考になりました。

お礼日時:2002/10/26 01:19

VBから呼び出すということなので、その方面から説明を。



Declareで呼び出すAPIの宣言をする際に、defファイルで指定された序数を指定することもできます。

サイズが小さくなるというのは、長い関数名がそのままDLLに埋め込まれるよりは小さくなるという意味でしょう。
    • good
    • 0
この回答へのお礼

参考になりました。ありがとうございます。

お礼日時:2002/10/26 01:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!