問題タブ [extern-c]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
109340 参照

c++ - C++ コードから C 関数を呼び出す

C++ から呼び出したい C 関数があります。extern "C" void foo()g++ を使用して C 関数をコンパイルできなかったため、" " のようなアプローチを使用できませんでした。しかし、gcc を使用して正常にコンパイルされます。C++ から関数を呼び出す方法はありますか?

0 投票する
2 に答える
896 参照

c++ - 未解決の外部と extern "C"?

私は C++ に慣れていないので、このリンクなどを完全には理解していません。extern "C"そして、これはリンクについてだと思います。

これから私が得る問題は、私がextern "C"考えるコードを解決する必要があるということです:

悲しいことに、私にはその方法がわかりません。このエラーは C++ の世界では非常に一般的であるため、答えを見つけるのは簡単ではありません。

うまくいけば、これを外部コードとして定義する必要があると思うので、これを解決するのはかなり簡単です。

0 投票する
3 に答える
199 参照

c++ - C と C++ を混合した関数プロトタイプをレイアウトする方法

.c および .cpp ファイルからインクルードしたいヘッダーがあります。

だから私は名前マングリングとextern "C"について知っているので...

しかし、これを .c ファイルに含めると、関数が表示されないため、#ifdef __cplusplus

だから私は2つのコピーを作成することになります:

これを行うためのより良い方法はありますか...私はprototypes.hと呼ばれる別のヘッダーを作成し、それらの2つの場所にそれを含めることを考えました...しかし、私が欠けている簡単なものはありますか?

0 投票する
3 に答える
94 参照

c++ - C メソッドを C++ プロジェクトに含めることができない可能性はありますか?

このことを使用して、C++ プロジェクト内に C メソッドを含めることができることを知っていますextern "C"。しかし、ここで、私が作成したライブラリと、開発の詳細とコンパイル仕様を開発している他の人/会社が作成したライブラリの両方からのかなり多くの C メソッドを使用する C++ プロジェクトを作成することを考えているとしましょう。単に気づいていない。

C ライブラリのこのメソッドのいくつかは、コンパイルと構成の詳細が不明なため、私の C++ プロジェクトに含めることができなかった可能性はありますextern "C"か? それとも、すべての C メソッドextern "C"は、使用される限り、C++ コードと 100% 互換性がある必要がありますか?

0 投票する
3 に答える
3709 参照

c++ - extern "C" と単に extern の違い

関数シグネチャで宣言された extern "C" を使用し、C ヘッダーを CPP ファイルにインクルードしている C/C++ コードを見たことがあります。

ただし、一部の関数は、署名の前に extern を宣言するだけです (「C」なし)。

QN1:

関数を定義するこれらの両方の方法は同じ効果がありますか、それとも異なることを意味しますか?

私が非常にばかげている場合は申し訳ありませんが、Googleでこの違いを見つけることができません.

例えば:

QN2:

関数が署名に extern で宣言されている場合、対応するヘッダー ファイルを extern "C" ブロック内に含める必要がありますか?

コメントで別のユーザーが指摘したように、マークされた重複はここでの質問を完全には満たしていません。将来、他の人が別の質問に誤解されないように編集しています。

0 投票する
1 に答える
184 参照

c++ - C++ クラスの C 呼び出し可能ラッパー

C# から呼び出すことができるように、C++ コードのラッパーを作成するチュートリアルに従っています。
ただし、ラッパーのコンパイル中にエラーが発生します。Header.h

以下はソースファイル(body.cpp)です

ラッパー クラス/dll は次のとおりです。

return ステートメントでラッパー クラスを取得します。クラスメソッドがなぜか認識されていないようです。エラーは次のとおりです。

エラー C2228: '.GetSum' の左側にはクラス/構造体/共用体が必要です

私を困惑させているのは、これがチュートリアルからコピーして貼り付けていることですが、私のものは機能しません。何が欠けている可能性がありますか?

0 投票する
1 に答える
634 参照

c++ - エラー LNK2019: 未解決の外部シンボル

古い MFC WIN CE 組み込みプロジェクトを Windows 7 Visual Studio 2010 でコンパイルできません。古いアプリケーションは組み込み Visual Studio 4 でコンパイルされ、mfcce211.dll が必要だったと思います。

誰でも、すべてのソース ファイルは問題なくコンパイルできますが、次のリンカ エラーが発生します。

VirtualCopy は、ファイル TX3922.cpp にある CTX3922::Initialise で呼び出され、以下を保持します。

プロジェクトのプロパティは次のとおりです。

  • 共有 DLL で MFC を使用する
  • ATL を使用しない
  • 共通言語ランタイムのサポートなし

/NODEFAULTLIB を有効にすると、これを含む多くのリンカー エラーがスローされます。

VirtualCopy の宣言がどこにも見つかりません

ライブラリがありません。もしそうなら、どのライブラリを見つける方法はありますか?

どうもありがとう

0 投票する
1 に答える
10651 参照

c++ - エラー: extern "C" に unqualified-id が必要です

ac 関数を呼び出したい cpp コードがあります。どちらも .o ファイルに適切にコンパイルされますが、コンパイルのために clang++ を実行すると、次のエラーが表示されます。

cpp ファイルのコードは次のとおりです。

エラーを回避するにはどうすればよいですか? clang ++でcファイルをコンパイルできません。externを使用する必要があります。ありがとう。