我在将结构从RPC客户端传递到服务器时遇到错误。客户端调用Output3过程。
IDL中的定义:
struct BarStruct
{
byte a;
int b;
byte c;
char* d;
char* ddd;
};
void Output3([in] handle_t hBinding, [in, out] struct BarStruct* b);
在标题中生成:
struct BarStruct
{
byte a;
int b;
byte c;
char *d;
char *ddd;
} ;
void Output3(
/* [in] */ handle_t hBinding,
/* [out][in] */ struct BarStruct *b);
服务器端的实现:
void Output3(handle_t hBinding, struct BarStruct * b)
{
std::cout << "a=" << b->a << std::endl;
}
客户端代码:
BarStruct b;
b.a=10;
std::cout<<"Output3"<<std::endl ;
Output3(hBinding, &b);
可能出现什么问题?
答案 0 :(得分:0)
您的结构包含指向某事物的指针,在特定情况下指向char
的指针。当你想将它转移到另一个进程时,你必须记住指针只是和地址值。当你想传递指针所指向的数据时,你需要一些不同的东西,比如conformant array。
基本思想是你必须通过指针传递地址数组的长度。