我可以将文件中的#ifdef
部分.def
用于 dll 吗?例如:
LIBRARY "mydll"
EXPORTS
checkRequirements
createDevice
installDriver
isPastVersionInstalled
removeDevice
#ifdef myVar
doSomethingElse
#endif
我可以将文件中的#ifdef
部分.def
用于 dll 吗?例如:
LIBRARY "mydll"
EXPORTS
checkRequirements
createDevice
installDriver
isPastVersionInstalled
removeDevice
#ifdef myVar
doSomethingElse
#endif
不,不可能,它不是经过预处理的文件。尽管我认为您可以通过运行预处理器来生成另一个 .def 文件并链接该文件。
更有效的方法是完全消除对 .def 文件的需要。在应导出的函数的代码中使用 __declspec(dllexport)。然后该代码中的任何#ifdef 将自动确保一个函数既不被编译也不被导出。
我不知道 .def 文件是否可以完全具有此功能,但您当然可以创建一个名为(例如)的文件mydll.def.in
,然后使用编译器预处理器在构建时生成 .def 文件。
在 Linux 上可以这样完成:
cpp -DmyVar=1 mydll.def.in > mydll.def
我想您是在 Windows 上执行此操作的,对此我无能为力,但情况类似。
唯一的问题是,根据您的编译器,您可能需要文件的其余部分包含有效的 C 标记,并且文件中不能有任何可能与宏混淆的符号。Gcc 有一个选项--traditional-cpp
可以解决这类问题,而你的编译器可能也有同样的问题。