禁止链接到 c++ 方法

Forbid linking against a c++ method

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

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

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

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

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

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

抑制它们

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

沿线的一些东西,来自 VS 命令提示符:

dumpbin /exports yourdll.dll

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

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

制作 lib 并link它到您的应用程序

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