没有用过VB,我觉得ss能不能和C++中的LPSTR都是指针么?

解决方案 »

  1.   

    在VC程序中定义一个*.def文件。包含Test的输出。unsigned short __declspec(dllexport) Test(LPSTR Password, long nMaxBufs)
    {
    if (strlen("abcdef") > nMaxBufs)
    strcpy(Password, "abcdef");
    else
    return -1;
    return 1;
    }VB代码如下:
    Private Declare Function Test Lib "password.dll" (sss As String, nMaxBufs as long) As Integer
    dim nn as Integer
    dim ss as string, ts as string
    ss = space(100)
    nn = Test(ss, 100)
    ss = left(ss, InStr(1, ss, vbnullstring))
      

  2.   

    sorry!
    if (strlen("abcdef") < nMaxBufs)
    strcpy(Password, "abcdef");
    else
    return -1;
    return 1;
      

  3.   

    unsigned short __declspec(dllexport) Test函数输出使用  stdcall  关键字函数声明应该如下:unsigned short _stacall __declspec(dllexport) test(LPCTSTR ss)参数类型为 LPCTSTR  就可以了
      

  4.   

    抱歉应该为__stdcall  关键字应为程序编译时缺省用的为  __cdecl
      

  5.   

    Private Declare Function Test Lib "password.dll" (byval sss As String) As long 
    ----------------------------------------------------
    在VB中必须把字符串定义为:byval类型,返回类型为LONG
      

  6.   

    多谢各位,我已经可以由VB向DLL传递参数了,以前不可以原因是VB代码参数中未加ByVal,但DLL如何向VB传递字符串呀,还请大家继续帮忙。