我试图在导出到DLL的函数中使用#ifdef开关
我遇到的问题是我的.EXE项目无法更改ifdef定义。就像它们被预编译到DLL中一样,无法更改。它是否正确?我是否可以在导出到DLL的C ++函数中使用#ifdef。
示例:
void API func()
{
#ifdef I_WANT_THIS
cout << "I want this" << endl;
#else
cout << "I dont want this" << endl;
#endif
}
如果我在构建DLL时没有定义任何内容,那么在.EXE项目中我尝试定义,I_WANT_THIS 它实际上并不适用于库中链接的cpp对象文件。我认为这应该是这样,但我觉得我应该能够做到这一点......
答案 0 :(得分:1)
您需要在运行时期间切换此类功能。 DLL是已编译的代码,任何类似的预处理在构建时都已执行。
答案 1 :(得分:0)
是的,它们已预编译到DLL的代码中。 EXE无法改变它们。要做你正在尝试的事情,你必须要么:
将额外参数传递给函数:
void API func(bool param)
{
if (param)
cout << "I want this" << endl;
else
cout << "I dont want this" << endl;
}
导出两个单独的函数:
void API doThis()
{
cout << "I want this" << endl;
}
void API doThat()
{
cout << "I want that" << endl;
}