C/ c++ -隐藏C或c++函数代码

C/C++ - Hide C or C++ function code from other people

本文关键字:c++ 函数 代码 隐藏      更新时间:2023-10-16

我有一个项目,写一个函数对一些数据执行某些操作。我可以用C/c++编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他能够在自己的代码中调用函数。这可能吗?我想到了这两种方法——

  • 在一些服务器上托管函数(如果可能的话),并给雇主一个URL来访问它。
  • 保护函数代码文件的密码(如果可能的话),并且只允许在代码中调用它。

请告诉我这些是否可行,并给我一个方法。

如上所述,您所需要的只是将代码分成头文件和源文件。然后,编译器在编译时生成一个目标文件;或者共享对象。然后,您可以将目标文件与头文件一起发布。这样做的唯一缺点是,您必须针对所针对的每种硬件架构进行编译。这里有一个最简单的方法,那就是发送object文件和头文件。

//file foo.h
void * foo(int );

和实现

//foo.c
#include "foo.h"
void * foo(int x)   
{
 //your code
};

现在用gcc

编译

这些生成foo.o。现在你可以用foo发送foo。h。或者最好是一个由object文件组成的共享对象。

现在您的客户端可以使用您的代码只获取头文件和。o文件。

//file foouser.c 
 #include "foo.h"
 void * x = foo(2);

假设foo。O和foo.h在同一个目录

gcc fouser .c -lfoo -o fouser

将生成可执行文件

这里有一个共享对象版本的教程,这里有一篇关于链接器和加载器的好文章

您可以将c++代码编译为静态或动态库

在头文件中创建一个函数定义

在.cpp文件中实现这些功能

将其编译为静态库或动态DLL,其中包含有函数声明的头文件

在Linux上的

http://www.iram.fr/罗氏/代码/c++/AddNumbers.html

在windows上

https://msdn.microsoft.com/en-us/library/ms235627.aspx

如果已编译,请记住它可以被反编译。

你能做到这一点的唯一方法可能是建立一个你托管的web服务(或者,更可能的是,你支付的云服务)。

还要记住,您将无限期地维护它,您可能需要协商维护费用。

以。a, .so,.dll格式编译并给出。

在那之前了解它们之间的区别共享对象(.so)、静态库(.a)和DLL's (.so)之间的区别?