0

私が作成した NSIS プラグインに C++ クラスを含めることはできますか、それとも C コードのみにすることができますか?

NSIS プラグインを Win32 DLL として開発していますが、ヘッダー ファイルのクラスが宣言されている行でコンパイル エラーが発生します。

コンパイルエラーは次のとおりです。

エラー C2061: 構文エラー: 識別子 'MyClass'

コンパイル エラーの原因となる行は次のとおりです。

class MyClass

何がうまくいかないのですか?Win32 DLL でクラスを使用することはできませんか? MS Visual C++ 2010 でコンパイルしています。

4

1 に答える 1

0

私は何年も前にこの間違いを犯し、1 時間頭を悩ませました。コードを C または C++ としてコンパイルするかどうかを選択するコンパイラ オプションを探していましたが、IDE で選択できるものはありません (clコマンド ラインから and を使用し/Tcて制御できます/Tp)。しかし、答えは簡単です。

ソース ファイルに.c拡張子がある場合は、C としてコンパイルされます。拡張子がある場合は、.cppC++ としてコンパイルされます。

さらに、C++ コンストラクト (クラスなど) をヘッダー ファイルに配置し、#includeそれらを C ファイルに配置すると、同じ問題が発生します。を使用して、C から C++ 構造を非表示にすることができます#ifdef __cplusplus

于 2012-07-11T09:21:24.103 に答える