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

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

2013-04-21 
C++中如何正确引用Powerbuider中的结构体C++中如何正确引用Powerbuider中的结构体最近在学习Powerbuider,

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传递的对象

热点排行