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

C++;带预处理器的条件链接 我有一个MSVC C++项目,我通过在项目属性的C++ /预处理器部分中指定预处理器定义来有条件地编译源代码的一部分。,c++,visual-c++,hyperlink,preprocessor,C++,Visual C++,Hyperlink,Preprocessor,我还想做的是根据预处理器定义有条件地链接库,我如何实现这一点 例如,在我的项目中,如果定义了CLSOPENLDV,我想排除: nodetalk32_vcpp.obj 包括: ldv32.lib 当它没有定义时,我想做相反的事情。您可能需要: #ifdef SOME_MACRO #pragma comment( lib, "ldv32" ) #endif 这是特定于Microsoft的,它可能无法与gcc、clang或其他编译器一起使用 为了排除nodetalk32_vcpp.obj我想到的唯一

我还想做的是根据预处理器定义有条件地链接库,我如何实现这一点

例如,在我的项目中,如果定义了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

阅读。您可以决定使用声明<代码> > IFDEF < /> >(或在头文件中)或“代码> iFEQ < /Cube >(在MaFfile中):哪些库包含或链接:-)@ PravoSkyA MSVC C++项目不可能由Mag文件驱动…@ SPLATEN不完全:<代码>这个布拉格是微软specificc@SPlatten第一个问题是:你为什么要这样做?即使将库传递给链接器,链接器也会发现不需要库的符号,并忽略它们。排序,“.lib”在pragma中不是必需的,不幸的是,我没有使用VS2017的NodeTalk32VCPPU的源代码。最后需要.lib。