vb调用dll时遇到问题 dll给出的 函数为 _bool functionA(char* v1, int * v2) 调用的时候 采用了 
Private Declare Function functionA Lib "dll.dll" (ByVal v1 As String, ByVal v2 As integer) as LongPrivate Declare Function functionA Lib "dll.dll" (ByRef v1 As Byte, ByVal v2 As integer ) As LongPrivate Declare Function functionA Lib "dll.dll" (ByRef v1 As String, ByVal v2 As integer) As Long结果都是说类型不匹配。有没有高人能详细的讲下 调用的时候如何把 指针参数 正确的 调用?最好给出结论前能自己试验下。

解决方案 »

  1.   

    因为vc和vb的字符编码不一样造成的
    把dll发上来
    我帮你做
    char* v1 在vb使用 byte 注意转换
    in   在 vb使用 long
      

  2.   

    _bool functionA(char* v1, int * v2) 
    ------------------------------
    Private Declare Function functionA Lib "dll.dll" (ByVal v1 As String, ByRef v2 As Long ) As Long关于指针参数的调用,基本上都使用ByRef方式传递,但是Char类型是比较特殊的一种情况:char* pstr---> ByVal pstr As String
    wchar* pstr--->ByRef pstr As String
    LPSTR pstr--->ByVal pstr As String
      

  3.   

    第一个用数组(BYTE),传的时候把第一个元素的地址传过去,记住最后的元素要是0。
    第二个就直接把LONG型变量的地址传过去好了。
      

  4.   

    不知道怎么发 dll上来呀
      

  5.   

    把你的DLL发给我,我帮你看看。[email protected]
      

  6.   

    把dll 发到 
    [email protected]
    带调用函数说明
      

  7.   

    还有 _bool functionA(Byte* v1, int * v2) 的问题Char * 的已经解决
      

  8.   

    _bool functionA(Byte* v1, int * v2) 
    ----------------
    Private Declare Function functionA Lib "dll.dll" (ByRef v1 As Byte, ByRef v2 As Long ) As Long
      

  9.   

    可能是 dll的 问题。
    多谢各位。