我有一个项目来编写一个函数来对某些数据执行某些操作。我可以用C / C ++编写代码,但我不想与雇主分享该函数的代码。相反,我只是想让他有权在他自己的代码中调用该函数。 可能吗? 我想到了这两种方法 -
请告诉我其中任何一项是否可行,并告诉我一个方法。
答案 0 :(得分:3)
如上所述,您只需将代码分离为头文件和源文件。然后,编译时编译器生成一个目标文件;或共享对象。然后,您可以使用头文件发送目标文件。唯一的缺点是您必须针对您定位的每个硬件体系结构进行编译。这是最简单的方法之一,即使用头文件发送目标文件。
//file foo.h
void * foo(int );
和实施
//foo.c
#include "foo.h"
void * foo(int x)
{
//your code
};
现在用gcc编译它
gcc -c foo.c -o foo.o
这些会生成foo.o.现在,您可以使用foo.o运送foo.h,或者最好是使用目标文件生成的共享对象。
现在,您的客户端可以使用您的代码只获取头文件和.o文件。
//file foouser.c
#include "foo.h"
void * x = foo(2);
假设foo.o和foo.h在同一目录中,
gcc foouser.c -lfoo -o foouser
将生成可执行文件。
答案 1 :(得分:2)
您可以将c ++代码编译为静态或动态库
这样做的方法是在头文件中创建函数定义
在.cpp文件中实现这些功能
使用头文件(也就是具有函数声明的人)将其编译为静态lib或动态dll
在Linux上 http://www.iram.fr/~roche/code/c++/AddNumbers.html
在Windows上 https://msdn.microsoft.com/en-us/library/ms235627.aspx
答案 2 :(得分:1)
以.a,.so,.dll格式编译和赠送。
在此之前了解他们之间的差异 Difference between shared objects (.so), static libraries (.a), and DLL's (.so)?
答案 3 :(得分:1)
如果编译,请记住它可以解编译。
您可以这样做的唯一方法是设置您托管的网络服务(或者更有可能是您支付的云服务)。
另外请记住,您将无限期地维护这一点,您可能需要协商维护费。