Private Declare Function testList Lib "T57Card.dll" Alias "_testList @8" (ByVal nIndex As Long, ByVal pszDevicePath As String) As Long
'调用:
        Dim strDevicePath As String
        strDevicePath = Space(260)        Dim nRt As Long = 0
        
        nRt = testList (0, strDevicePath)
为什么 在dll里 检测到 strDevicePath==NULL ???, 该如何传递字符串才不为空??
T57CARD_API int __stdcall testList( int nIndex,LPTSTR pszDevicePath)
{
        if( NULL==pszDevicePath ) return 3;//这里返回3!!
}

解决方案 »

  1.   

    dll 要做的事是 赋值给pszDevicePath, 高手来帮帮忙呀
      

  2.   

      帅哥,你这到底是VB的工程,还是C++的工程啊??!!
    如果你是在C++里设计的DLL,然后编译成DLL后,加入到VB的工程里面,再由VB的代码向那个参数传递数据;接着你就在C++那里看到DLL的那个参数时空对吗?
      如果是这样的话,那你就犯了个最基本的错误,编译后的DLL再加入VB后,VB就会创建一个DLL的实例副本,就是相当于一个影像,而原来C++里的DLL是不受影响的,也不会受到你传递的参数,只有那个“影像”会收到参数。
      如果不是,请再详细一点描述你的问题。
      

  3.   

    DLL 是VC 工程创建的, 由VB工程加载使用, VB调用dll函数 testList,并传递一个字符串指针过去, testList里面为 这个字符串赋值操作 , 并返回, VB在调用testList返回后打印该字符串, 目的就是这样. 该如何实现呢?  我的代码改如何更正呢
    ?