传过去的s变量是属于VB的,dll是另外一个进程,dll改写vb程序的内存当然要非法操作

解决方案 »

  1.   

    “通常,字符串应该使用 ByVal 方式传递到 APIs”
                                                   ——摘自MSDN
      

  2.   

    如果用byval是以传值方式传递,是不能返回结果的
    我用VC来调用DLL就可以
      

  3.   

    传过去的缓冲区没有初始化,DLL中却要写,当然要非法操作了。
    第一,用byval,第二,在VB中传过去的参数要初始化,如:dim x as String*20。先定义一个20个字节的缓冲区。