C から C 関数を呼び出すと、特に「extern "C" void foo()」アプローチが失敗する場合に問題が発生する可能性があります。 g のコンパイルの問題に。これに対処するために、別の戦略が提案されています。
コンパイル:
C コードのコンパイル:
gcc -c -o somecode.o somecode.c
C をコンパイルするコード:
g++ -c -o othercode.o othercode.cpp
リンク:
C リンカーを使用してコンパイルされたファイルをリンクします:
g++ -o yourprogram somecode.o othercode.o
ヘッダーのインクルード:
へC ヘッダーが含まれていることを C コンパイラに通知し、othercode.cpp ファイルを次のように更新します。
extern "C" { #include "somecode.h" }
somecode.h ヘッダー ファイル:
C を宣言するヘッダー ファイル (somecode.h) function:
#ifndef SOMECODE_H_ #define SOMECODE_H_ void foo(); #endif
注:
このメソッドは、コンパイルを C ステージと C ステージに分離し、その後にリンクします。コンパイラー (この例では gcc) の選択は柔軟ですが、原則は変わりません。
以上がC コードから C 関数を正常に呼び出すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。