0

我在将结构从 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);

可能有什么问题?

4

1 回答 1

0

您的结构包含指向某些东西的指针,在特定情况下是指向char. 当您想将其转移到另一个进程时,您必须记住指针只是地址值。当您想传递指针指向的数据时,您需要一些不同的东西,例如符合要求的数组

基本思想是您必须通过指针传递数组的长度。

于 2014-03-25T14:04:24.807 回答