ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
-
デビュー
#1
投稿記事
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
-
tak
- 記事: 162
- 登録日時: 2005年5月31日(火) 07:49
#2
投稿記事
by tak »
AB での引数渡しはデフォルトで ByVal となります。
VB は ByRef がデフォルトですので、渡し方をどちらも合わせる必要があります。
VB にて
コード: 全て選択
Declare Function aplusb Lib "aaa.dll" (ByVal a As Long, ByVal b As Long) As Long
とすればうまくいくはずです。
-
ゲスト
#3
投稿記事
by ゲスト »
私も参考になりました。
コードを書くときは、値渡し、参照渡しは面倒でも、
常に明示しておくほうがよさそうですね。