我正在尝试为包含的代码创建一个 Visual Studio 项目
DL_EXPORT(void) initlua(void);
所以我基本上需要一个宏
#define DL_EXPORT(retVal) __declspec(dllexport) retVal
哪个有效,但特定于操作系统/编译器,所以我想把它放在项目中*。但我不知道在Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions(或在命令行中)中放置什么来做到这一点。我认为这些中的任何一个都可以:
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)
并期望;
.
定义的正确语法是什么?还是没有,正如这个问题中的人们所假设的那样?
谢谢。
* 我没有对 MSVC 使用简单的#ifdef-check,因为我只是想用我不想破坏的现有构建脚本为现有库(疯狂的 python)创建一个 Visual Studio 项目。虽然我可以承认使用#ifndef DL_EXPORT
- 但我仍然想知道我是否遗漏了什么,或者这在 Visual Studio 中是否不可能。