PB调用VC dll文件

chuangsifang 2010-02-27 12:39:07
//VC代码
extern "C" __declspec(dllexport) long __stdcall TT_data(long aa,char * bb)
{
bb="我爱中国";
return (1) ;
}

//PB代码
function long TT_data(long aa, ref string bb) LIBRARY "data.dll";

integer li_i
long ll_aa
string ls_bb

li_i = TT_data(8,ls_bb)

if li_i = 1 then
messagebox("",ls_bb)//ls_bb=我爱中国
end if

请各位老大帮忙看一下,本人自己用VC制作的dll用PB调试,TT_data外部函数返回正常,可ls_bb却无法返回"我爱中国",代码都可以执行的.
...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuangsifang 2010-03-01
  • 打赏
  • 举报
回复
sewinten楼主的strcpy()行,可我把char * bb改为unsigned char* bb后strcpy(bb,"我爱中国");就不能用了

extern "C" __declspec(dllexport) long __stdcall TT_data(long aa,unsigned char* bb)
{
strcpy(bb,"我爱中国");
return (1) ;
}
ribut9225 2010-02-27
  • 打赏
  • 举报
回复
再补充一点

如果C++中用指针的话,你需要事先在PB中分配足够的内存空间


string ls_bb

ls_bb = space(8) //分配8个字符的内存空间

否则,你的dll中会写指针错
ribut9225 2010-02-27
  • 打赏
  • 举报
回复
同意楼上所述
楼主C++还需要好好学习,指针字符串不能直接赋值的,要用strcpy
sewinten 2010-02-27
  • 打赏
  • 举报
回复
把bb="我爱中国"; 改为
strcpy(bb,"我爱中国") ;
或者
sprintf(bb,"我爱中国");

1,075

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧