c++ VS2010将我的代码编译为几乎可读的代码
C++ VS2010 compiles my code to nearly readable code
我尝试使用反编译器"破解"我自己的应用程序。我可以清楚地看到函数名和许多参数名。
因此,我认为我以某种方式用我的代码编译调试信息,尽管它被设置为释放。
此外,编译器告诉我诸如
之类的东西mylib.lib(vq.obj): warning LNK4099: PDB "vc100. obj "没有找到"mylib.lib(vq.obj)"或"M:myappReleasevc100.pdb";对象将被链接,如果没有调试信息可用。
这是一个暗示,VC试图包括一些调试信息?
另外,我的解决方案由3个项目组成,产生3个编译后的dll。
当我"破解"3个dll中的一个时,我可以看到其中另外2个dll的函数名。我不知道为什么。
有人能告诉我如何使dll更不可调试,以及如何"使用"只有dll中的dll函数,而不是1个dll中的所有函数。我希望我能解释清楚。
这是一个暗示,VC试图包括一些调试信息?
是的,它实际上意味着你正在链接你的dll与调试信息。您可以通过将link -> Debugging -> Generate Debug Info设置为No来关闭它。但是,请注意,此选项不会(大约)影响您的dll文件,但它会切换生成pdb文件。
有两种类型的实体,它们的名称将显式地存储在dll文件中:
- 接口功能
- 多态类名
你不能摆脱第一个。任何使用dll的人都必须知道接口函数是如何命名的。
但是,您可以禁用第二个。只有在启用RTTI时,才需要多态类名。这就是计算dynamic_cast
和typeid
的方法。如果您不需要这些特性,您可以通过C/c++ ->语言->启用运行时类型信息并将其设置为No来禁用RTTI。参见从二进制dll文件中删除c++类名。
- 如何修复sfml c++代码编译错误
- 尝试用java代码编译和运行c++代码
- 此代码编译良好,但文件未创建?请指出错误
- 为什么我的 BaseClass:Method 代码编译(带有单冒号)?
- 代码编译没有任何输出,入门程序
- 通过Python Distutils(用于Python C扩展)使用可重定位的设备代码编译CUDA代码
- 代码编译但不起作用!cmd窗口只是理想和理想,但什么也没发生
- 无法使用 g++ 使用C++代码编译 C 库
- 如何在Ubuntu中使用Visual Studio代码编译C++代码
- 推力+提升代码编译错误
- C++代码编译,但在 Zorin OS 上运行时显示错误
- 如何在使用模板时将 CPP 代码编译到库文件中
- 是否可以将Visual Studio 2017将C 代码编译到EXE以外的文件类型中
- 使用 Visual Studio for C++ 代码编译错误
- 使用 Android Studio 使用本机代码编译 apk 时,如何在链接处删除 libgnustl_static.
- 使用 Emscripten 将 OpenCV 代码编译C++ Javascript
- 将C 代码编译到独立应用程序.App
- 为什么此代码编译 (C++11) 而没有类型不匹配错误
- 重用编译器前端的结果,以加快多个配置/平台的C++代码编译
- 如何将C++11代码编译为网络汇编