PB与VC++的连接问题

hehong_cq 2002-03-12 08:08:46
我用VC++写了一个动态链接库,想在PB中调用,总是返回空字符串(不是NULL),
但动态链接库中的sSerial中的字符串是正确的,不知何故,请各位指教!!!

动态链接库(MyDll.dll)中的函数如下:
#include "stdafx.h"
#include "windows.h"
char* GetId(void);
char* GetId(void)
{
char* sSerial;
...
return sSerial;
}

PB中声明如下:
Function long GetId() Library "MyDLL.dll"

调用脚本如下:
String ls_serial
ls_serial = GetId()
...全文
70 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leehunter 2002-03-13
  • 打赏
  • 举报
回复
llitcwl(中国龙) 的方法正确,但需要注意几点:
声明应为:
Function long GetId(ref string XXX) Library "MyDLL.dll"
调用脚本应为:
string ls_serial

ls_serial=space(n) //n视情况而定
ll_i=GetId(ls_serial)
否则会报内存错


Leehunter 2002-03-13
  • 打赏
  • 举报
回复
同意楼上的。因为sSerial是DLL的局部变量,在函数执行完后的空间已经被释放,因此,在PB中得不到返回值。
另外,你的声明
Function long GetId() Library "MyDLL.dll"

应该是
Function string GetId() Library "MyDLL.dll" 的笔误吧?

llitcwl 2002-03-12
  • 打赏
  • 举报
回复
上面VC函数中返回的是一个指向sSerial的指针,在PB中可能不好调用
试试改成参数,这样可以用REF接收
#include "stdafx.h"
#include "windows.h"
long GetId(char * XXX);
long GetId(char * XXX)
{
XXX=......
...
return 1;
}

PB中声明如下:
Function long GetId(string ref XXX) Library "MyDLL.dll"

调用脚本如下:
String ls_serial
ll_i = GetId(ls_serial)

401

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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