C/ c++ -隐藏C或c++函数代码
C/C++ - Hide C or C++ function code from other people
我有一个项目,写一个函数对一些数据执行某些操作。我可以用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)之间的区别?
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗