好多文章说dll里避免用string类型 请问一下 是export的方法的参数不用string类型还是方法体里都不能用string类型?没有export的方法能不能使用string呢?
string确实方便很多,如果想用string类型,该怎么来解决?
pchar 和 string的使用区别能讲讲吗 
谢谢

解决方案 »

  1.   

    很多vcl方法的参数都是string型 比如LoadFromFile('');
    难道每次使用这些方法的时候都是strpas()去转换一下吗?麻烦
      

  2.   

    导出函数最好不要用string,内部函数可以用,但是建议少用,毕竟这不是dll标准类型,如果一定要用,那需要在dll和调用者的uses第一位置引用sharmem,但是这样只能在delphi里面用,如果写dll可以让其他语言用最好不要用string
      

  3.   

    只是建议在导出函数参数或返回部分不用String,在程序中用一般是没问题的
    如果在导出函数参数或返回中用String不是不可以,正如楼上所说,只要uses ShareMem单元就可以了
    但这种DLL只能用于delphi或c++ builder,且要与BORLNDMM.DLL一起布
      

  4.   

    可以用函数返回值时带回需要的值的办法。比如Function Abc(var Str: String):Integer;或者直接用 procedure 来返回需要的值
      

  5.   

    谢谢楼上每一位 
    如果内部函数使用的string类型的话 是否还需要引入ShareMem单元?
      

  6.   

    完全没问题。。建议使用 FastMM4.
      

  7.   

    导出函数中都使用PCHar来代替就可以了