【问题标题】:Include static library within a preprocessor directive在预处理器指令中包含静态库
【发布时间】:2013-03-19 15:05:11
【问题描述】:

我正在使用 Visual Studio 2012。

我多次使用预处理器指令,例如

#ifdef something 
      #include<some_header.h>
#else
      #include<other_header.h>
#endif

我想知道是否可以以类似的方式链接静态库:

#ifdef something 
      // use some_library.lib
#else
      // use other_library.lib
#endif

问题来自我previous question 的主题:我有两个静态库 lib1.lib、lib2.lib(不是它们的代码),它们没有命名空间,具有相同的函数原型,但具有不同的实现。

【问题讨论】:

  • 你要求的是疯狂。如果两个库没有相同的方法签名,则它们没有任何意义,并且如果它们确实具有相同的方法签名,这可能应该是翻转的运行时设置(例如日志记录或其他调试信息)
  • @RichardJ.RossIII 这是一个完全有效的情况。例如,链接到调试库与发布库。它通常不是通过#pragmas 而是通过项目配置来完成的。

标签: c++ c-preprocessor static-libraries


【解决方案1】:

如果你使用的是 MSVC,你可以这样做

#ifdef something 
      #pragma comment(lib,"xxx.lib")
#else
      #pragma comment(lib,"zzz.lib")
#endif

在 GCC 中你不能这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2010-09-23
    • 2013-11-26
    • 2013-06-06
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    相关资源
    最近更新 更多