读书人

C++中怎么正确引用Powerbuider中的结构

发布时间: 2013-04-21 21:18:07 作者: rapoo

C++中如何正确引用Powerbuider中的结构体
C++中如何正确引用Powerbuider中的结构体

最近在学习Powerbuider,想有PBNI接口写一个函数。
这个API函数是GetSystemTime,参数中要使用一个SYSTEMTIME结构体。

我的PB函数定义是

function int GetSystemTime(ref structure lptime)

systemtime 结构体在PB中已经定义,
在代码中传入这个函数:
PB代码:
systemtime tm;
GetSystemTime(tm);

C++中的函数代码:


// Method callable from PowerBuilder
PBXRESULT CSocket::f_wsastartup( PBCallInfo * ci )
{
PBXRESULTpbxr = PBX_OK;
LPSYSTEMTIME lptm = (LPSYSTEMTIME)ci->pArgs->GetAt(0)->GetClass();
// LPSYSTEMTIME lptm = (LPSYSTEMTIME)ci->pArgs->GetAt(0)->GetObject();
GetSysteTime(lptm);
return pbxr;
}


问题是不能获取到PB中传入结构体正确的指针地址。所以引发内存异常。
例如:获取string字符串的变量地址,可以使用m_pSeesion->GetString();得到LPCTSTR指针。

请问。这个结构体是如何调用的,在PB中如声明。C++中如何引用。

现在这个难题,自己还不能突破,请前辈能指点一下迷茫。
不甚感激。。。
[解决办法]
PB的调用API时一般也可以用数组代替,主要是类型的大小要控制好,如int 和 long所占字节数
[解决办法]
PB通过结构体与PBNI交互时,pbni代码是pbobject了,你应该通过pbobject obj = ci->pArgs->GetAt(0)->GetObject();来获取pb传递的对象

读书人网 >PB

热点推荐