我有一个程序在一个配置中调用foo.dll中的函数,并且有第二个配置不使用foo.dll。我想要求foo.dll仅在需要时出现。我目前使用
在两个版本之间切换#define FLAGVAR 0
或
#define FLAGVAR 1
其中FLAGVAR == 1表示使用foo.dll。然后我将我的import语句和函数声明包围起来:
#if FLAGVAR == 1
#import "foo_file.h"
#endif
...
#if FLAGVAR == 1
int foobar() {...}
#endif
如果我在链接器中包含foo.dll->输入 - >附加依赖项,那么无论FLAGVAR的值如何,我的程序都会构建。
这是我的问题:
我不想要求在FLAGVAR == 0的版本中出现foo.dll。因此,我将foo.dll移至Linker-> Input-> Delay Loaded DLLs。现在,如果FLAGVAR == 0那么它不需要foo.dll并且构建正常。但是,如果FLAGVAR == 1,那么我会收到一堆LNK2019错误,抱怨foo.dll中的函数无法链接。
如何在FLAGVAR == 1时完成仅需要foo.dll的目标?我是否正确使用延迟dll加载?在此先感谢您的帮助!
使用Visual Studio 2017,版本15.4.5
答案 0 :(得分:0)
根据评论中的此链接解决:C++ Visual Studio: linking using pragma comment
我没有在visual studio的属性对话框中放置任何可选库。相反,在头文件中,我将以下几行:
#if FLAGVAR == 1
#pragma comment(lib, "foo.lib")
#endif