私は巨大なCプロジェクトを持っています。そして今、いくつかの変数を埋めるために C++ 関数が必要でした。
関数を extern "C" として宣言することで、C プロジェクトから関数を呼び出すことは問題ありませんでした。
問題は、C++ 関数にポインターを渡す必要があり、関数内でポインターに値を割り当てたいということです。しかし、まさにこの時点で、プログラムは「セグメンテーション違反」でクラッシュします。
これを機能させる方法はありますか?それとも、C と C++ の間でこの方法でポインターを操作することは不可能ですか?
C で関数をスレッドとして呼び出す:
Restwo = pthread_create(&num, NULL, (void *) function, &var);
ヘッダ
#ifdef __cplusplus
extern "C"
{ // Dies sorgt dafür, dass der Header sowohl in C als auch in C++ funktioniert
#endif
int function(int *pITS);
#ifdef __cplusplus
}
#endif
C++ 関数
extern "C" {
int getNewLsaSignals(int *var) {
printf("Successfully started\n"); //works
var = 19; //doesn't work
//insert some c++ code here
}
}