1. ホーム
  2. c++

[解決済み] C++のコードからCの関数を呼び出す

2023-01-06 20:57:30

質問

C++から呼び出したいC言語関数があります。私は"を使うことができませんでした。 extern "C" void foo() というのは、その C 関数は g++ を使ってコンパイルすることができなかったからです。しかし、gccを使用するとうまくコンパイルできます。C++から関数を呼び出す方法について何かアイデアはありますか?

どのように解決するのですか?

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++コンパイラにCヘッダが来ることを伝えなければなりません。そのため othercode.cpp で始まります。

extern "C" {
#include "somecode.h"
}

somecode.h のようなものが含まれている必要があります。

 #ifndef SOMECODE_H_
 #define SOMECODE_H_

 void foo();

 #endif


(この例では gcc を使用しましたが、原理はどのコンパイラでも同じです。それぞれ C と C++ として別々にビルドし、それを一緒にリンクします)。