如何在发布源代码之前隐藏c++函数定义
How to hide a C++ function definition before releasing source code
我正在构建一个Windows (Visual Studio,基于c++)控制台应用程序,并希望为它发布源代码。然而,我不希望特定函数的定义对它可见。是否有一种方法可以预编译(只是包含定义的文件),这样就没有人可以查看它,但源代码的其余部分是可见的,可以使用"预编译"函数定义构建/运行?
您有两个基本选择:
-
将该函数转换成编译后的形式
- 如果您只希望船源代码,您可以编译一个共享库,然后找到或编写一个实用程序来生成C/c++源代码与字符数组包含二进制文件的内容,那么你的程序可以
ifstream::write()
文件和链接(例如dlopen()
)动态共享库在运行时(这个你买不多只是航运共享库,除非你有紧迫的理由需要一个"单一"释放,和上述限定目的)
- 如果您只希望船源代码,您可以编译一个共享库,然后找到或编写一个实用程序来生成C/c++源代码与字符数组包含二进制文件的内容,那么你的程序可以
-
以某种方式混淆源代码,从而删除了通过阅读它可能获得的价值或洞察力
-
有许多源代码混淆实用程序(具体建议与S.O.无关)
-
混淆的一种形式是生成c++源代码的汇编语言版本(例如
g++ -S
,cl /S
),这对大多数程序员来说将是冗长的,难以理解和进一步修改
-
不行。当您发布源代码时,有关函数的信息就在那里。如果你以某种"预编译"的方式释放它,函数仍然被调用,那么信息仍然在那里。
相关文章:
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 结构和双指针隐藏在其他结构中,多层混淆
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 参数包构造函数在类模板中隐藏用户定义的转换
- 如何等待窗口隐藏在Qt中?
- 如何使用类型别名从模板化类中隐藏模板列表
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- 名称隐藏对静态函数继承的实例使用
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- 从多个模板化基类派生时出现"隐藏重载的虚函数"警告
- 如何在 Omnet++ 5.6.1 中隐藏箭头?
- 在C++中隐藏键盘记录器的控制台窗口
- 从静态库使用时隐藏不透明结构的内容
- 隐藏用于聚合初始化的空基类
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- Qt中的包装连接方法隐藏了编译器所需的信息
- 隐藏重载虚拟功能的模板化访客:SFINAE 在使用?
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- C++ [错误] 声明'char '隐藏参数。什么意思?
- 隐藏由 WinAPI 调用创建的窗口