我在 Visual Studio 2010 下有一个 C++ 项目,它编译成一个 dll。我的项目中定义了几个专用于实现的私有类,例如CMyClass
. 此类不是从 dll 或任何接口函数导出的。但是,当我检查生成的 dll 文件时,其中存储了一个字符串“CMyClass”。这是一个发布版本,我不希望这个字符串出现在 dll 文件中。此 dll 已交付给客户,我希望将我在项目中使用的所有名称从 dll 文件中删除,因此没有人能够获得如此简单的线索来了解我们在 dll 中使用的算法。
我使用发布配置。在项目属性中,链接器选项卡下的“生成调试信息”选项被关闭,C/C++选项卡下的“调试信息格式”设置为“程序数据库(/Zi)”。我试图为“调试信息格式”设置空字符串,但没有成功。
在 dll 中找到的字符串看起来像.?AVCMyClass@@
并且位于 dll 文件的最末尾。它是 dll 文件中唯一出现的“CMyClass”字符串。但是,这个字符串几乎是为我所有的内部类提供的。
如何摆脱这些提及?
更新
请注意,我不想混淆源代码本身。提供的链接无关紧要。我只是看不出为什么类名存储在 dll 文件中。我总是可以在构建之前重命名我的类,但这不是很直接的解决方案。
更新2
我不同意社区关闭这个问题,因为这不是重复的。Tyler Gill在评论中给出了答案。感谢他,也为别人感到羞耻。