プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
Cで作成したDLLをVB6から呼び出した時にエラーが発生します。エラー内容は「実行時エラー'49'DLLが正しく呼び出せません。」です。
いろいろ試してみると、DLL側にパラメータを指定した場合にエラーが発生しているということが分かったのですが、対処方法は分かりませんでした。
以下にソース内容を記述致しますので、何処が悪いのかをご指摘頂けませんでしょうか。

<DLL側(aaa.dll)>
__declspec(dllexport) int MyFunction1()
{
return 4;
}
__declspec(dllexport) int MyFunction2(int x)
{
return x * 2;
}

<VB側>
共通.bas
Public Declare Function MyFunction1 Lib "aaa.dll" () As Long
Public Declare Function MyFunction2 Lib "aaa.dll" (ByVal a As Long) As Long

実際の使用箇所
Dim param As Long
Dim returnCode As Long

MsgBox MyFunction1()
param = 3
MsgBox MyFunction2(param)


どうぞ宜しくお願い致します。

A 回答 (3件)

>__declspec(dllexport) int MyFunction1()


>__declspec(dllexport) int MyFunction2(int x)


Cのソース側に「__stdcall」←これつけましょ

__declspec(dllexport) int __stdcall MyFunction1()
__declspec(dllexport) int __stdcall MyFunction2(int x)


VB側はそのままでよいと思います。
    • good
    • 0

訂正:


int型の引数aに
    • good
    • 1

勘で答えます。

実験してないので解りません(使っていたのがかなり前で既に記憶にない)

Long型の変数paramをint型の引数paramに渡しているから、とか・・・
    • good
    • 0

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