C++ 条件 link 带预处理器

C++ conditional link with preprocessor

我有一个 MSVC C++ 项目,我通过在项目属性的 C++/预处理器部分传递指定的预处理器定义来有条件地编译部分源代码。

我还想做的是有条件地 link 使用基于预处理器定义的库,我该如何实现?

例如在我的项目中如果定义了 CLSOPENLDV 我想排除:

nodetalk32_vcpp.obj

并包括:

ldv32.lib

当它没有定义时我想做相反的事情。

您可能需要这个:

#ifdef SOME_MACRO
#pragma comment( lib, "ldv32" )
#endif

这是 Microsoft 特有的,它可能不适用于 gcc、clang 或其他编译器。

为了排除 nodetalk32_vcpp.obj,我想到的唯一一件事是:

#ifndef SOME_MACRO
  // content of nodetalk32_vcpp.cpp
#endif