当定义位于使用DLL的可执行项目中时,如何在DLL项目中检查ifdef? 我有一个C++ Visual Studio 2015项目,包括 1个Windows API可执行文件、1个Windows控制台可执行文件和1个由两个可执行文件共享的dll
我在Windows API main.cpp文件中定义了一个USEWINDOWS 我没有在控制台应用程序中定义这个 在DLL中,我希望执行ifdef USEVOWS语句,但定义的范围似乎仅对Win32可执行文件有效,而不是在DLL中 如何将此定义扩展到DLL而不影响console应用程序中未定义的USEWINDOWS当定义位于使用DLL的可执行项目中时,如何在DLL项目中检查ifdef? 我有一个C++ Visual Studio 2015项目,包括 1个Windows API可执行文件、1个Windows控制台可执行文件和1个由两个可执行文件共享的dll,c++,dll,visual-studio-2015,C++,Dll,Visual Studio 2015,我在Windows API main.cpp文件中定义了一个USEWINDOWS 我没有在控制台应用程序中定义这个 在DLL中,我希望执行ifdef USEVOWS语句,但定义的范围似乎仅对Win32可执行文件有效,而不是在DLL中 如何将此定义扩展到DLL而不影响console应用程序中未定义的USEWINDOWS 谢谢DLL由两个可执行文件共享,因此只有一个实现可用,因此您不能使用特定于实现的编译标志 您需要一个运行时标志,即一些API参数,它告诉DLL代码可以使用windows的东西。例如
谢谢DLL由两个可执行文件共享,因此只有一个实现可用,因此您不能使用特定于实现的编译标志 您需要一个运行时标志,即一些API参数,它告诉DLL代码可以使用windows的东西。例如 api.h dll.c 附录c 控制台c
#include "api.h"
...
someAPI(...., false);
未通过编译进行测试,但您应该得到漂移…DLL或任何编译代码中都没有持久化的定义。这仅仅是文本替换,由预处理器在代码编译开始之前完成。您能展示一下您的代码吗?最好是以一种特殊的形式。
#include "api.h"
void someAPI(...., bool useWindows) {
...
if (useWindows) {
// do "windows stuff" here
}
...
}
#include "api.h"
...
someAPI(...., true);
#include "api.h"
...
someAPI(...., false);