在实际生活中,作为程序员偶尔会因为资金不够用了选择去兼职写代码,当我们写完一个代码,将他发给某个公司的时候,我们经常会想到如何让目标公司看不见你写的源代码(源代码是你好不容易想出来的,难免不有些心疼嘛),但目标公司却可以运行他所需要的代码,下面我将讲解一种静态库的使用方法,来实现这个方法。
在Visual Studio 2022中,存在许多方法来是你的代码不被别人看到,却可以使用你的代码。
除了这些例子外当然还有很多方法来让别人看不到你写的代码,下面我将通过使用静态库的方法,给你们讲解一下。
静态库(Static Library)是一种将一组可重用的二进制代码打包在一起的方法,它们是编译时链接的。静态库的主要作用是提供了一种代码复用的方式,使得程序员不必重复写一些常用的功能。在使用静态库时,将其链接到目标程序中。这样,程序就可以调用静态库中函数的实现,提高了程序的效率和维护性。相比动态库,静态库的优势是它们更加稳定,因为它们不依赖于其他库,所以可以避免一些运行时问题。但也存在一些缺点,例如静态库的尺寸较大,不便于分发和更新。
首先我们先创建三个文件
text.h
#define _CRT_SECURE_NO_WARNINGS 1
#include
#include
void _scanf();//自己定义的输入函数
text.c 书写函数的源文件 ,这里我用一个打印正方形的函数代码
#include "text.h"
void _scanf()
{
int a;
while (scanf("%d", &a) != EOF) { // 注意 while 处理多个 case
// 64 位输出请用 printf("%lld") to
int i, j;
for (i = 0; i < a; i++)
{
for (j = 0; j < a; j++)
{
if (i == 0 || i == a - 1) printf("*");
else if ((j == 0 || j == a - 1) && (i != 0 || i != a - 1))printf("*");
else printf(" ");
}
printf("\n");
}
}
}
main.c
#include "text.h"
int main() {
_scanf();
return 0;
}
我们可以使用记事本打开这个静态库文件,显然显示的是乱码
如果我们想把软件卖给目标公司,我们可以直接把这个静态库直接卖给他,并且将刚才书写的头文件一并打包,在头文件里书写这写函数的使用方法,便可做到让别人看不到你写的代码,却能够运行你的代码。
在Linux或MacOS上,可使用以下步骤创建静态库:
1.编写源代码文件,并编译成目标文件(.o文件):
gcc -c file1.c file2.c ... -o object1.o object2.o ...
2.将目标文件打包成静态库文件(.a文件):
ar rcs libname.a object1.o object2.o ...
其中,ar是打包工具的命令,rcs分别表示创建、替换和压缩,libname.a为静态库文件名。
3.将静态库文件安装到系统目录中(可选):
sudo cp libname.a /usr/lib/
4.将头文件拷贝到系统目录中(可选):
sudo cp header.h /usr/include/
这样,其他程序就可以使用libname.a静态库和header.h头文件了。在编译链接时,只需使用以下命令:
gcc main.c -L/path/to/lib -lname -o program
其中,/path/to/lib为静态库文件所在的路径,lib为静态库文件名(libname.a去掉前缀“lib”和后缀“.a”),program为输出的可执行文件名。
要导入静态库,存在着很多的方法,比如在Xcode里导入静态库
首先,将静态库文件复制到您的项目目录中。
在Xcode中,选择您的项目并打开“Build Phases”选项卡。
展开“Link Binary With Libraries”选项卡,然后单击“+”按钮以添加新的库。
在“Choose frameworks and libraries to add”对话框中,单击“Add Other…”按钮。
在弹出的窗口中,浏览到您的项目目录中,选择静态库文件并单击“Add”按钮。
静态库现在已添加到您的项目中。 您可以在代码中使用库中的函数和类。
请注意,您还需要在代码中包含头文件(通常在静态库文件夹中),以便使用库中的函数和类。
在VS2022里导入静态库就比较简单了,我们可以直接使用代码来导入静态库
#program comment(lib,"text.lib");
使用这一行代码,便可直接导入静态库,并且使用静态库里的函数了