我正在尝试为包含
的代码创建一个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)
并期望;
。
定义的正确语法是什么?或者没有,正如this question中的人所假设的那样?
感谢。
*我没有对MSVC使用简单的#ifdef-check,因为我只是尝试使用现有的构建脚本为现有的库(lunatic python)创建一个Visual Studio项目,我不想破坏它。虽然我可以肯定地使用#ifndef DL_EXPORT
- 但我仍然想知道我是否遗漏了某些内容,或者在Visual Studio中这是不可能的。