0

私はVC6で書かれた単純なDLLを1つの関数で持っています:

__declspec(dllexport) int myfunc(long a, unsigned char *b, unsigned char *c, unsigned char *d, unsigned char *e)

そして、次を使用してvb6から呼び出しています:

Declare Function myfunc Lib "mylib.dll" (ByVal a As Long, ByVal b As String, ByVal c As String, ByVal d As String, ByVal e As String) As Long

....

dim a as long
dim b as string
dim c as string
dim d as string
dim e as string
dim r as long

r=myfunc(a,b,c,d,e)

「dll呼び出し規約が正しくありません」というエラーが表示されますが、その理由がわかりません。何か案は?

4

2 に答える 2

3

一般的に言えば、'bad DLL...' とは、その内容を意味します。VB6 では、呼び出す外部関数に対して _stdcall 規則 (Win API など) が必要です。

__stdcallC 関数プロトタイプに追加してみて、何が起こるかを確認してください。

于 2009-04-27T18:28:21.510 に答える
0

Paul Caton によるユニバーサル DLL 関数の呼び出し元を確認してください。

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=70195&lngWId=1

これにより、VB6 からほぼすべてのタイプの関数を呼び出すことができます。

于 2010-09-17T00:55:39.597 に答える