私の質問はやや単純です。
extern "C"
C++ 静的クラス関数でC リンク ( ) を行うことは可能ですか? - ラッパーを使用しない場合。
いいえ、ラッパー関数を作成する以外に方法はありません。
class X
{
public:
static void f();
};
extern "C" void call_X_f()
{
X::f();
}
コメントで言ったように、あなたはできません。しかし、同じ正味の効果を得ることができます。
これが私が話していたことです:
class A;
extern "C" void foo(A*);
class A
{
int i;
friend void foo(A*);
};
extern "C" void foo (A* a)
{
a->i = 10;
}
int main()
{
A a;
foo(&a);
return 0;
}
ここでgcc 4.7.2で正常にコンパイルされます
extern "C"
静的メンバー関数には適用できません。ただし、目的はアセンブラーから関数を呼び出すことなので、アセンブラー コードでマングルされた名前を使用するだけです。ここには魔法はありません。必要なのは名前だけです。