1

を含むコード用の Visual Studio プロジェクトを作成しようとしています。

DL_EXPORT(void) initlua(void);

だから私は基本的に次のようなマクロが必要です

#define DL_EXPORT(retVal) __declspec(dllexport) retVal

これは機能しますが、OS/コンパイラ固有であるため、プロジェクトに入れたいと思います*。しかし、それを行うためにプロパティ-> C/C++->プリプロセッサ->プリプロセッサ定義(またはコマンドライン)に何を入れればよいかわかりません。これらのいずれかが機能すると思います:

DL_EXPORT(retVal) __declspec(dllexport) retVal
DL_EXPORT(retVal)=__declspec(dllexport) retVal

私は後者に傾いていますが、どちらも機能していないようです-コンパイル時に次のエラーが発生します。

error C2061: syntax error : identifier 'initlua'
error C2059: syntax error : ';'
error C2059: syntax error : 'type'

プリプロセッサの結果を取得するために /P を使用してコンパイルすると、その理由が説明されます。何も起こらなかったため、コンパイラはそれint DL_EXPORT(void);.

定義の正しい構文は何ですか? それとも、この質問の人々が想定したように、何もありませんか?

ありがとう。

* 壊したくない既存のビルド スクリプトを使用して、既存のライブラリ (狂った python) 用の Visual Studio プロジェクトを作成しようとしているだけなので、MSVC に単純な #ifdef-check を使用していません。確かに使用できます#ifndef DL_EXPORTが、何か不足しているのか、それとも Visual Studio でこれが不可能なのかを知りたいです。

4

1 に答える 1

3

コマンドラインで/FIを使用して、すべてのソース ファイルに自動的にインクルードするインクルード ファイルを指定できるはずです。そのファイルに、#define必要なステートメントを入れます。

于 2012-11-21T17:59:52.007 に答える