我在DLL中定义了一个回调函数(返回值是string类型),它返回的是一个值还是一个引用啊?我怎么感觉是一个引用?因为当我将这个函数返回值赋给一个string变量后,若调用FreeLibrary()释放动态库后,会出现非法读内存的错误。

解决方案 »

  1.   

    警告:dll的编写中已经写的很明白了,不要使用string传递参数!!!
    使用 shortstring 或是 pchar 试试应该不会报错了
      

  2.   

    有没有 Use ShareMem 单元?引用了再说!
      

  3.   

    如果用String传递,那么该Dll就没有通用性了,你应该用使用Windows的原型数据代替Delphi的特殊类型,比如PChar。
      

  4.   

    是啊,dllwizard里面不是叫你不要用string来做为传出的参数吗,用pchar