这样声明:
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 就可以了。

解决方案 »

  1.   

    to::TechnoFantasy(www.applevb.com)
    我在VB中怎么找不到copyMemory函数?我知道这很笨,请再指点一下。
      

  2.   

    不好意思,你说的是API函数,我在VB中一般很少用API。
      

  3.   

    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)在vb的工具中有一个API浏览工具,可以看到所有的API函数声明的。
      

  4.   

    1、试试这样:
    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好了
      

  5.   

    Private Declare Function IPAddress Lib "testdll.dll" (Byval ipAddr As string, Byval SubMask As string, ByVal length As Integer) As String足够了,我就是这样用的
    我只是不能解决char**  不知谁能告诉我。
      

  6.   

    to Chice_wxg(VS.NET = 光驱烤肉,我也入网了) 
    参数用Any或是String都可以运行而不出现错误提示,但不表示正确,因为没有返回我要的数据,即IPAddress和SubMask两个参数并没有返回值。
    而把函数返回值声明为String时,调用时使用返回方式,即ss=getIPAddress(),就会出现程序非法操作而无法进行。to TechnoFantasy(www.applevb.com)
    我的VC还很不熟,所以对一些VC的数据类型根本不知道怎么用,比如你说的LPCSTR,我就不知道如何用它来返回我要的字符串。所以我还得到msdn上去学学再说。
      

  7.   

    to gyang(杨杨) 
    能说说你的VB的版本吗?我的是6。如果你的也是6,我可以把DLL给你测试一下,如果是7就不要提了,因为我的程序必须能在win98上运行才行。