我有一个项目来编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他可以在自己的代码中调用该函数。是否可以?我想到了这两种方法 -
请告诉我这些是否可行,并给我一个方法。
如上所述,您所需要的只是将您的代码分成一个头文件和一个源文件。然后,您的编译器在编译时生成一个目标文件;或共享对象。然后,您可以将目标文件与头文件一起发送。唯一的缺点是您必须针对您所针对的每个硬件架构进行编译。这是最简单的方法之一,即发送带有头文件的目标文件。
//file foo.h
void * foo(int );
Run Code Online (Sandbox Code Playgroud)
和实施
//foo.c
#include "foo.h"
void * foo(int x)
{
//your code
};
Run Code Online (Sandbox Code Playgroud)
现在用gcc编译它
gcc -c foo.c -o foo.o
这些生成 foo.o。现在,您可以将 foo.h 与 foo.o 一起发送,或者最好是由目标文件构成的共享对象。
现在您的客户可以使用您的代码只获取头文件和 .o 文件。
//file foouser.c
#include "foo.h"
void * x = foo(2);
Run Code Online (Sandbox Code Playgroud)
假设 foo.o 和 foo.h 在同一目录中,
gcc foouser.c -lfoo -o foouser
将生成可执行文件foouser。
有共享对象版本的教程在这里和有关链接器和加载一个很好的文章在这里