如何在发布源代码之前隐藏C ++函数定义

时间:2015-05-20 08:43:05

标签: c++

我正在构建一个Windows(基于Visual Studio,基于C ++)的控制台应用程序,并希望为其发布源代码。但是,我不希望它的特定功能的定义可见。有没有办法预编译(只是包含定义的文件)它,以便没有人可以查看它,但其余的源是可见的,可以使用'预编译'函数定义构建/运行?< / p>

2 个答案:

答案 0 :(得分:3)

您有两个基本选择:

  • 以编译形式提供该功能

    • 如果您只想发送源代码,可以编译共享库,然后查找或编写实用程序以生成包含二进制文件内容的字符数组的C / C ++源代码,然后您的程序可以{{1}在运行时即时运行文件和链接(例如ifstream::write())共享库(除非您有迫切的理由需要“仅源”版本,否则这不会比仅运送共享库有多大帮助,以上符合您的目的)
  • 以某种方式模糊源代码,消除了通过阅读它可能获得的价值或洞察力

    • 有许多源代码混淆实用程序(特定建议不在S.O.的主题。)

    • 一种形式的混淆是生成C ++源代码的汇编语言版本(例如dlopen()g++ -S),这对于大多数程序员来说更难以理解和修改

答案 1 :(得分:0)

不,你不能。当您发布源代码时,有关该功能的信息就在那里。如果你以某种方式发布它&#39;预编译&#39;并且仍然调用该函数,然后信息仍然存在。如果您要求保密功能,则不得将其释放。