かんたんなDLL

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
デビュー

かんたんなDLL

#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 ゲスト »

私も参考になりました。

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