关于Dll string的有关问题

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

------解决方案--------------------
导出函数最好不要用string,内部函数可以用,但是建议少用,毕竟这不是dll标准类型,如果一定要用,那需要在dll和调用者的uses第一位置引用sharmem,但是这样只能在delphi里面用,如果写dll可以让其他语言用最好不要用string
------解决方案--------------------
只是建议在导出函数参数或返回部分不用String,在程序中用一般是没问题的
如果在导出函数参数或返回中用String不是不可以,正如楼上所说,只要uses ShareMem单元就可以了
但这种DLL只能用于delphi或c++ builder,且要与BORLNDMM.DLL一起布

------解决方案--------------------
可以用函数返回值时带回需要的值的办法。

比如

Function Abc(var Str: String):Integer;

或者直接用 procedure 来返回需要的值
------解决方案--------------------
内部使用不需要
------解决方案--------------------
完全没问题。。建议使用 FastMM4.
------解决方案--------------------
导出函数中都使用PCHar来代替就可以了
------解决方案--------------------
探讨
谢谢楼上每一位
如果内部函数使用的string类型的话 是否还需要引入ShareMem单元?