0

私はいくつかのデータ生成/処理を行う共有ライブラリを持っており、それらにアクセスしてデータを転送するためのいくつかのAPIとアプリケーションを作成しました。

/ * ** * ** * *******アプリケーション**** ** * ** / _ _ _ _

 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;

 }

上記の方法でデータをアプリケーションに取得しようとしましたが、データはライブラリ内で正しく出力されますが、ライブラリの外部(アプリケーション内)では何も出力されません...

誰かが私がデータb/wライブラリとアプリケーションを通信するための最良の方法を使用するのを助けることができますか?

4

1 に答える 1

4

Cはポインタを含む値で引数を渡すため、関数がポインタを別のアドレスにポイントし、それらの変更を呼び出し元に表示できるようにするには、ポインタのアドレスを関数に渡す必要があります。char**

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

呼び出された:

char* data1;
char* data2;
genratedCamData(1, &data1 , &data2);
于 2013-01-07T17:10:09.153 に答える