这样声明:
Private Declare Function IPAddress Lib "testdll.dll" (ByVal ipAddr As Long, ByVal SubMask As Long, ByVal length As Integer) As String然后再利用 copyMemory 将ipAddr SubMask 指向的地址拷贝到String中。
如果是返回字符串,最好用LPCSTR而不是char* ,这样在VB引用中直接 Byval ipAddr As String 就可以了。
Private Declare Function IPAddress Lib "testdll.dll" (ByVal ipAddr As Long, ByVal SubMask As Long, ByVal length As Integer) As String然后再利用 copyMemory 将ipAddr SubMask 指向的地址拷贝到String中。
如果是返回字符串,最好用LPCSTR而不是char* ,这样在VB引用中直接 Byval ipAddr As String 就可以了。
我在VB中怎么找不到copyMemory函数?我知道这很笨,请再指点一下。
Private Declare Function IPAddress Lib "testdll.dll" (ipAddr As Any, SubMask As Any, ByVal length As Long) As Long在VB中调用:
Dim ip As String
Dim mask As String
Dim ss As String
ip = Space(256)
mask = Space(256)
Dim length As Integer
length = 256
getIPAddress ByVal ip,ByVal mask, length2、如果1成功,试试这样:Private Declare Function IPAddress Lib "testdll.dll" (ipAddr As Any, SubMask As Any, ByVal length As Long) As String在VB中调用:
Dim ip As String
Dim mask As String
Dim ss As String
ip = Space(256)
mask = Space(256)
Dim length As Integer
length = 256
ss = getIPAddress(ByVal ip,ByVal mask, length)如果不1行2不行,那么你就考虑用CopyMemory转换最后的ss好了
我只是不能解决char** 不知谁能告诉我。
参数用Any或是String都可以运行而不出现错误提示,但不表示正确,因为没有返回我要的数据,即IPAddress和SubMask两个参数并没有返回值。
而把函数返回值声明为String时,调用时使用返回方式,即ss=getIPAddress(),就会出现程序非法操作而无法进行。to TechnoFantasy(www.applevb.com)
我的VC还很不熟,所以对一些VC的数据类型根本不知道怎么用,比如你说的LPCSTR,我就不知道如何用它来返回我要的字符串。所以我还得到msdn上去学学再说。
能说说你的VB的版本吗?我的是6。如果你的也是6,我可以把DLL给你测试一下,如果是7就不要提了,因为我的程序必须能在win98上运行才行。