在共享库和应用程序之间传输数据

时间:2013-01-07 17:04:53

标签: c pointers shared-libraries

我有共享库,我在那里进行一些数据生成/处理,并且我已经编写了一些API和应用程序来访问它们并传输数据。

/ * ** * ** * ** * **** < /强> 应用 * ** * ** * ** / < / p>

 char* data1;

 char* data2;

 genratedCamData(1, char* data1 , char *data2);

 printf(" data1 %s ",data1);
 printf(" data2 %s ",data2);
 free(data2);

/ * ** * ** * ** * ** 内部库 ** * ** * ** * ** * ** * * /

 int genratedCamData(1, char* datafirst , char *datasecond)

 {

 if(CAM==1)
 datafirst=getCam1data();

 printf(" test at lib %s ",type);

 datasecond=malloc(sizeof(char) * 100);
 sprintf(datafirst,"%s",datasecond);

 return 0;

 }

我试过上面的方法将数据输入到应用程序中,但数据在库内正确打印但在lib(在应用程序中)外面它没有打印任何东西......

有些机构可以帮助我使用最好的方式来传递数据b / w libs和应用程序。

1 个答案:

答案 0 :(得分:4)

当C按值传递参数(包括指针)时,需要将指针的地址传递给函数,以使函数能够将指针指向不同的地址并让调用者可以看到这些更改:

char**

调用:

int genratedCamData(int CAM, char** datafirst , char **datasecond)
{
    *datafirst=getCam1data();
    *datasecond=malloc(100); /* sizeof(char) is guaranteed to be 1. */
}