【问题标题】:Forbid linking against a c++ method禁止链接到 c++ 方法
【发布时间】:2015-08-12 12:31:27
【问题描述】:

我尝试禁止使用方法,如果某些代码使用它会产生编译错误。

这是一个专有的遗留模块,我知道有些方法是有问题的。我们有头文件和 dll。

我无法弄清楚这个方法在我使用的巨大项目中的所有用途(很多定义,一些隐式转换......)

如果编译器检测到此方法的使用,它可以停止(或只是警告)吗?

【问题讨论】:

  • 只是从头文件中删除它?你会得到编译错误
  • 能否修改源代码或者至少修改头文件?
  • 也许只是undef吧?
  • @saad 也许使用它的代码使用了不同的声明。你试过用 = delete 声明它吗?
  • 您是如何设法使遗留的operator<< 出现问题的?大声笑

标签: c++ c++11 visual-studio-2012 dependency-walker


【解决方案1】:

您可以在 Visual C++ 中使用__declspec(deprecated) 来生成使用特定函数的警告。您可以使用#pragma deprecated 来弃用任何符号(包括宏)。

查看更多信息on MSDN。这可能会产生警告或错误(取决于计算机标志),但您可以在需要时使用额外的#pragmas 来抑制它们

【讨论】:

    【解决方案2】:

    好吧,不确定它是否有效(所以请纠正我),但您可能想尝试从您的 DLL 中制作库

    类似的东西,来自 VS 命令提示符:

    dumpbin /exports yourdll.dll
    

    您将获得导出符号输出并将其复制到 .def 文件中

    编辑 .def 文件以删除不需要的符号

    制作 lib 并将其链接到您的应用程序

    lib /def:C:\mydef.def /OUT:C:\mylib.lib
    

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      相关资源
      最近更新 更多