ページ 11

かんたんなDLL

Posted: 2006年5月24日(水) 00:07
by デビュー
Active Basic でWin32DLLができるときき、飛びついた者です。

さて、以下のDLL(aaa.dll)をつくりました。

Function Export aplusb(a as long ,b as long) as long

aplusb = a + b

End Function

このDLL関数をエクセルのVBAで以下のようにしたところ、
なぜか「2616260」
が返ってくるのです。
何か致命的なミスありますでしょうか?



Declare Function aplusb Lib "C:\AB\aaa\aaa.dll" (a As Long, b As Long) As Long

Sub a()

MsgBox aplusb(1, 2)


End Sub

Posted: 2006年5月24日(水) 01:18
by tak
AB での引数渡しはデフォルトで ByVal となります。
VB は ByRef がデフォルトですので、渡し方をどちらも合わせる必要があります。

VB にて

コード: 全て選択

Declare Function aplusb Lib "aaa.dll" (ByVal a As Long, ByVal b As Long) As Long
とすればうまくいくはずです。

Posted: 2006年6月03日(土) 20:13
by ゲスト
私も参考になりました。

コードを書くときは、値渡し、参照渡しは面倒でも、
常に明示しておくほうがよさそうですね。