DLL 的 Static link(使用 *.lib)是否可以仅从代码中获取(无需添加到项目中,类似于 #pragma link "...")?

Is Static link of DLL (using *.lib) possible from code only (without add to project, something like #pragma link "...")?

我正在升级我现有的 CAD/CAM 项目(相当大的一个 > 10MByte 的代码)并且必须添加一些特殊的测量设备。问题是我有不止一个测量系统供应商(虽然已经决定使用哪个供应商)并且我想配置它们(使用 #define 以防将来供应商发生变化)只使用选定的代码设备类型。所以我有类似的东西:

  #define use_vendor1
//#define use_vendor2
//#define use_vendor3

一些供应商 API 需要他们自己的 DLL,所以我需要例如:

Project/Add to project/vendor1.lib
Project/Remove from project/unused_vendor.lib

如果使用use_vendor1 ...那会很不舒服 add/remove 需要重新配置 exe 的每种类型。我想知道是否有类似的方法:

#ifdef use_vendor1
#pragme link "vendor1.lib"
#endif

那个粗略的不起作用,因为 DLL *.lib 不是编译代码 *.obj ...

在项目中拥有所有库是一个选项,但这需要将 exe 与我宁愿避免的所有 DLL 一起运送。

另一个选项是动态 DLL link,但我宁愿避免使用它,因为它对我来说编码更多...

我必须使用旧的 BDS2006 Turbo C++ Explorer IDE 和编译器。

是否也可以在 EXE 的相对路径中静态 link DLL?

您正在寻找#pragma comment

#ifdef use_vendor1
#pragma comment(lib, "vendor1.lib")
#endif