【发布时间】:2017-11-29 03:16:48
【问题描述】:
我有一个程序在一个配置中从 foo.dll 调用函数,而第二个配置不使用 foo.dll。我想要求 foo.dll 仅在需要时出现。我目前使用
在两个版本之间切换#define FLAGVAR 0
或
#define FLAGVAR 1
其中 FLAGVAR==1 表示使用了 foo.dll。然后我将我的导入语句和函数声明包围起来,如下所示:
#if FLAGVAR == 1
#import "foo_file.h"
#endif
...
#if FLAGVAR == 1
int foobar() {...}
#endif
如果我在 Linker->Input->Additional Dependencies 中包含 foo.dll,那么无论 FLAGVAR 的值如何,我的程序都会构建。
这是我的问题:
我不想要求 foo.dll 出现在 FLAGVAR == 0 的版本中。因此,我将 foo.dll 移至 Linker->Input->Delay Loaded DLL。现在如果 FLAGVAR==0 那么它不需要 foo.dll 并且构建良好。但是,如果 FLAGVAR==1,那么我会收到一堆 LNK2019 错误,抱怨 foo.dll 中的函数无法链接。
当 FLAGVAR==1 时,我怎样才能实现只需要 foo.dll 的目标?我是否错误地使用了延迟的 dll 加载?提前感谢您的帮助!
使用 Visual Studio 2017 版本 15.4.5
【问题讨论】:
-
在手机上,但请查看以下内容:stackoverflow.com/questions/12821391/… 可能更适合您的需求。
-
太完美了,谢谢!
标签: c++ visual-studio dll linker-errors