1

C++ ライブラリの C ラッパーを追加しています。場合によっては、ユーザー定義のコールバック関数をライブラリに渡す必要があります。また、コールバック関数のプロトタイプには参照パラメーターがあります。例えば:

typedef void (*callBackFunc)(A& a, B& b);  //A, B are classes

以下の C プロトタイプを外部ヘッダー ファイルで使用し、ラッパー ライブラリに組み込まれているいくつかのヘルパー関数を使用して、オブジェクト a と b を解釈したいと考えています。

typedef void (*callBackFunc)(void *a, void *b);

ラッパー ライブラリのヘルパー関数:

extern "C" int getValueFromA(void *a) {
    A* pa = (A *)a;
    return pa->value;
}
....

この方法は機能しますか?参照パラメーターがどのように実装されているかわかりません。

4

2 に答える 2

3

C++ から C を呼び出すと、多少の手間がかかります。C から C++ を呼び出そうとすることは、非マゾヒストにとっては非常に苦痛です。これは、コンパイラ、ランタイム バージョン、およびその他の多くの詳細に依存します。C プログラムが C++ 環境をセットアップし、使用されるグローバル オブジェクトを構築することを確認する必要があります。最終的に機能するようになると、次のコンパイラが進行し、リバース エンジニアリングのすべての作業が中断されます。

その上、「参照を取るC関数」はまったく存在しません。面白い足場が必要だ...フェンスの両側に

于 2013-04-14T02:25:18.137 に答える