首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

DLL接口里返回CHAR*的有关问题

2012-10-17 
DLL接口里返回CHAR*的问题需要给别人提供一个DLL,返回的类型是CHAR*,尝试过以下几种方法1定义一个返回变量

DLL接口里返回CHAR*的问题
需要给别人提供一个DLL,返回的类型是CHAR*,尝试过以下几种方法
1定义一个返回变量char cres[1024]返回cres即可,但是这样一量返回的长度超过1024就会切断
2使用AnsiString(UnicodeString)变量sRes,返回c_str(t.str)也可以,但是这样的方法,接收的人经常后面就会少几位,请问怎么解决好呢?此种方法怎么样才能让后面不少?

[解决办法]
char* 就得用c_str();

或者在你的函数里这样改下试试 
char buf[2048];
return buf

返回char*真麻烦
[解决办法]
1、Dll中定义一个全局变量 AnsiString PublicBuff, 返回PublicBuff.c_str()即可.
如果不是全局变量,接收的人少几个字节很正常。但因为是全局变量,也就不支持多线程了。

2、支持多线程的话,需要规范,即规范好谁分配内存,谁释放。可以在DLL中放一个接口,deletePCHARinDLL(char *),由调用者负责delete,即谁调用,谁调用deletePCHARinDLL来清场。

3、另一种规范是,DLL标明用户必须自行保障有足够的空间。使用者可以先调用DLL中的函数,取得字串长度,再由使用者申请内存。

你说的情况,只能是第1种,DLL中用全局变量或局部静态变量来实现。

热点排行