c语言visual studio制作并使用静态库与动态库的方法

 一、静态库的制作与使用

我的项目已跑通,这里举个例子进行过程记录方便下次制作静态库。后续如果遇到不同方法制作静态库会来继续记录。

        该过程至少需要建两个项目,一个项目用于正常编写程序与调用静态库测试,另一个项目用于生成静态库。第一步我们先建一个编写程序的项目,如果程序已编写完成,且可顺利跑通,则直接看第二步即可。

第一步:编写程序(y=a*(b+c))

        在写程序时一般需要好几个.c文件,以实现同一个文件内调用函数和不同文件间调用,这里举一个两个文件的例子,首先创建一个空项目StaticLibTest

右键点击头文件-> 添加->类

按照该方法添加两个,一个文件实现乘法,一个实现加法 

如下图所示,multiplication.c/h文件实现乘法,sum.c/h实现加法,另外还需要在源文件中添加一个新建项用于测试。

multiplication.c

#include "multiplication.h"

float Multiplication(float a, float b)
{
	return a * b;
}

multiplication.h

#pragma once

#ifndef __MULTIPLICATION_H__
#define __MULTIPLICATION_H__
#include "sum.h"


float Multiplication(float a, float b);

#endif

sum.c

#include "sum.h"


float sum(float a, float b)
{
	return a + b;
}

sum.h

#pragma once

#ifndef __SUM_H__
#define __SUM_H__
#include <stdio.h>

float sum(float a, float b);

#endif

test.c

#include "multiplication.h"


// 实现功能:y=a*(b+c)
int main()
{
	float result;
	float a = 3.56734522;
	float b = 4.15926535897;
	float c = 12.9323846;
	result = Multiplication(a, sum(b, c));
	printf("a*(b+c)的结果为:%f", result);
}

运行结果

说明该程序无问题。我们接下来将其封装成静态库。

第二步:静态库封装

新建项目-项目模板选择静态库,项目名称为StaticLib1

进来以后,会发现已经有生成的文件,全部删除 

按照前面的方法重新创建两个类(multiplication 和sum)将我们创建的文件内容复制过来(是每个文件里的内容,不是文件;不包括测试文件test.c),一定要重新创建!!!直接复制文件会出现问题。随便打开一个文件,点击项目->属性

 将该页面“预编译头”改成不使用预编译头。

接下来点击运行,运行程序,出现这个界面不用管

找到该项目文件夹

复制生成的StaticLib1.lib到我们创建的需要调用静态库的测试项目中,我是在StaticLibTest项目进行测试的,需要将项目文件夹里的.c/.h文件删除。里边的(右键点击解决方案->在文件资源管理器中打开) 并且将我们用到的.h文件:sum.h、multiplication.h也复制过来与.lib放到同一文件夹下,将之前的.c/.h文件全部删除(若想在该项目下测试必须要全部删除,否则会报错),或者为了保险起见重新建一个测试项目,在源文件中右键->添加->新建项建operationtest.c调用静态库测试

operationtest.c代码

#include "multiplication.h"
#include "sum.h"
#pragma comment(lib, "StaticLib1.lib")

// 实现功能:y=a*(b+c)
int main()
{
	float result;
	float a = 3.56734522;
	float b = 4.15926535897;
	float c = 12.9323846;
	result = Multiplication(a, sum(b, c));
	printf("a*(b+c)的结果为:%f", result);
}

 运行结果

        我们只需要用生成的.lib文件与我们写的所有.h文件 ,便可以再次调用函数了

二、动态库制作与使用

 参考博客中的方法一:隐式调用;整体步骤与静态库相似

C语言动态库的封装和使用_windows封装c语言动态库-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/xiaotai1234/article/details/112670669

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用C语言编写加减乘除的函数,并将它们打包成静态库动态库,以供其他程序使用。 首先,你需要编写包含加减乘除函数的源代码文件。例如,你可以创建一个名为"math_operations.c"的文件,并在其中实现以下函数: ```c int add(int a, int b) { return a + b; } int subtract(int a, int b) { return a - b; } int multiply(int a, int b) { return a * b; } int divide(int a, int b) { if (b == 0) { printf("Error: Division by zero\n"); return 0; } return a / b; } ``` 接下来,你可以使用编译器将这些函数编译成静态库动态库。 要创建静态库,你可以使用以下命令: ``` gcc -c math_operations.c -o math_operations.o ar rcs libmath_operations.a math_operations.o ``` 这将生成一个名为"libmath_operations.a"的静态库文件。 要创建动态库,你可以使用以下命令: ``` gcc -shared -o libmath_operations.so math_operations.c ``` 这将生成一个名为"libmath_operations.so"的动态库文件。 无论你选择创建静态库还是动态库,你都可以在其他程序中使用这些函数。只需在程序中包含头文件,并链接相应的库文件即可。例如,假设你有一个名为"main.c"的文件,你可以这样使用这些函数: ```c #include <stdio.h> #include "math_operations.h" // 包含头文件 int main() { int a = 10; int b = 5; printf("Addition: %d\n", add(a, b)); printf("Subtraction: %d\n", subtract(a, b)); printf("Multiplication: %d\n", multiply(a, b)); printf("Division: %d\n", divide(a, b)); return 0; } ``` 编译并链接这个程序时,确保将库文件与之相关联。例如,如果你使用静态库,可以这样编译: ``` gcc main.c -o main -L. -lmath_operations ``` 如果你使用动态库,可以这样编译: ``` gcc main.c -o main -L. -lmath_operations ``` 完成编译后,你就可以运行该程序了,它将使用你创建的静态库动态库中的函数进行加减乘除运算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值