[解決済み] 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++ として別々にビルドし、それを一緒にリンクします)。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] 派生クラス関数から親クラス関数を呼び出すには?
-
[解決済み] プログラムがクラッシュしたときにスタックトレースを自動的に生成する方法
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 unsigned int vs. size_t
-
[解決済み】coutはstdのメンバではない
-
[解決済み] string does not name a type Errorが発生するのはなぜですか?
-
[解決済み] クラスにデフォルトコンストラクタが存在しない。
-
[解決済み】エラー:strcpyがこのスコープで宣言されていない
-
[解決済み】「Expected '(' for function-style cast or type construction」エラーの意味とは?
-
[解決済み】「std::operator」で「operator<<」にマッチするものがない。
-
[解決済み] 非静的データメンバの無効な使用
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み] C++とCの融合 - #ifdef __cplusplus はどのように機能するのか?