c++ - 如何向客户隐藏 C++ 源代码

标签 c++

我想向我的客户发送一些组件。我想提供源代码的原因是:

1) 我的类(class)是模板化的。客户可能会使用任何模板参数,因此我无法预编译并发送 .o 文件。

2) 客户可能使用与我不同的 gcc 编译器版本。所以我希望他最后做编译。

现在,由于显而易见的原因,我不能透露我的源代码。我最多只能显示 .h 文件。我如何实现这一目标的任何想法。我在考虑gcc中的一些钩子(Hook),支持编译前解密等。这可能吗?

简而言之,我希望他能够在无法窥视内部的情况下编译这段代码。

最佳答案

契约 = 好,混淆 = 不好。

也就是说,您始终可以使用一种 PIMPL 习惯用法来为您的客户提供二进制文件和 header 中的模板化包装器。然后想法是使用“无类型”单独编译的实现,其中模板化包装器仅为客户端代码提供类型安全。这就是在编译器开始理解如何优化模板之前人们经常做的事情,即避免机器代码级别的代码膨胀,但它只提供了一些针对琐碎的复制和粘贴盗窃的保护措施,而不是任何针对某人的保护措施愿意深入研究机器代码。

但也许付出的努力不仅仅是 reshape 您的功能?

关于c++ - 如何向客户隐藏 C++ 源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921162/

相关文章:

c++ - 如何在 Poco::HTTPClientSession 中获取下载大小?

c++ - 二叉搜索树 C++

c++ - 如何将 istream_view 收集到容器中?

c++ - OpenCV cv::Mat 'ones' 用于多 channel 矩阵?

c++ - 使用 C++ 使透明度不显示 opengl 中窗口后面的内容

c++ - 对重载new和delete施加限制

javascript - Node.js:如何用 C++ 创建 ES6 模块

c++ - 在 MFC 中,为什么我需要创建 CWinApp 的全局实例?

c++ - 部署跨 GPU 系列 GPU 代码的当前实践

c++ - 使用递归在数字树中查找最长的单词