本篇讲述使用C语言编写静态链接库,而且使用C和C++的方式来调用等.

一、静态库程序:执行时不独立存在,链接到可执行文件或者动态库中,目标程序的归档。

1、用C编写静态库步骤

a.建立项目(Win32 Static Library)

b.加入库程序,源文件使用C文件 (Win32 Static Library)

clib.c库源文件

<pre name="code" class="cpp">int CLib_add(int add1,int add2)
{
return add1+add2;
} int CLib_sub(int add1,int add2)
{
return add1-add2;
}

编译,链接后产生clib.lib,后面使用这个文件

2、静态库的使用

a.建立一个C文件,能够在文件里直接使用C库函数,不须要头文件,C编译器仅仅是依据库函数名称,在库中找到相应的函数代码,进行链接。

b.库的路径设置。项目的“Setting”中设置库路径,也能够使用#pragmakeyword设置 #pragma comment(lib,"..\\clib\\clib.lib")

3、C的方式调用C语言编写的静态库

C Type

//C编译器什么头文件及函数声明都不要.....

#pragma comment(lib,"..\\clib\\clib.lib") //通知链接器。到那找源码.

int main(void)
{
int num1 = 100;
int num2 = 1000; int nSum = CLib_add(num1,num2);
int nSub = CLib_sub(num1,num2); printf("nSum = %d,nSub = %d\r\n",nSum,nSub); return 0;
}
</pre><pre name="code" class="cpp">4、<strong>C++的方式调用C语言编写的静态库</strong>

在CPP环境使用C静态库。库中函数原型定义要添加extern "C",比如:extern "C" int Add(...);

//C++函数必须声明,这是C++的函数特点
//C函数不必声明。这是C的特点
//C++编译器编译函数时,必须找到声明,依照那种方式给函数进行编译。 extern "C" int CLib_add(int num1,int num2);
extern "C" int CLib_sub(int num1,int num2); //extern "C" 给c++编译器看,这个是依照C语言格式进行编译.
//以上二句是给编译器看得. #pragma comment(lib,"..\\clib\\clib.lib")
//以上一句代码是给链接器看的. int main(void)
{
int num1 = 100;
int num2 = 1000; nSum = CLib_add(num1,num2);
nSub = CLib_sub(num1,num2); cout<<"nSum = "<<nSum<<" nSub = "<<nSub<<endl; return 0;
}

C语言编写静态链接库及其使用的更多相关文章

  1. C语言动静态链接库使用(笔记)

    看了视频一直没空写........... C静态链接库不用说了跟你写在cpp文件里的函数一样不会有单独的模块 不再赘述生活中用的比较少 例子 .h文件 int Plus(int x, int y); ...

  2. vs2019编写c++的静态链接库并自己使用

    参考网址:https://blog.csdn.net/flame333/article/details/108346305 静态链接库1.新建一个静态库项目,其中有两个头文件,两个源文件 其中比较重要 ...

  3. Linux环境下c语言静态链接库和动态链接库创建和使用

    库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀. 面对比一下两者: 静态链接库:当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功, ...

  4. 动态链接库dll,静态链接库lib, 导入库lib

    转载地址:http://www.cnblogs.com/chio/archive/2008/08/05/1261296.html 目前以lib后缀的库有两种,一种为静态链接库(Static Libar ...

  5. 动态链接库dll,导入库lib,静态链接库lib

    目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库” ...

  6. GCC编译过程与动态链接库和静态链接库

    1. 库的介绍 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可 ...

  7. 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。静态库是一个或者多个obj文件的打包

    前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”) ...

  8. C运行时库(C Run-time Library)详解(提供的另一个最重要的功能是为应用程序添加启动函数。Visual C++对控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)

    一.什么是C运行时库 1)C运行时库就是 C run-time library,是 C 而非 C++ 语言世界的概念:取这个名字就是因为你的 C 程序运行时需要这些库中的函数. 2)C 语言是所谓的“ ...

  9. VC++中的C运行时库浅析(控制台程序默认使用单线程的静态链接库,而MFC中的CFile类已暗藏了多线程)

    1.概论 运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的.C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于 ...

随机推荐

  1. win7打不开chm格式文件

           近期在开发的过程中,发现重装的系统Wind7 打不开java帮助文档.搜索了半天才找到. 在这里分享一下. 一.假设不能打开,可这样恢复文件关联: 1.開始执行,输入:regsvr32 ...

  2. Flume Source官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于flume官网 http://flume.apache.org/FlumeUserGuide.html Flume Sources Avro Source Thrift ...

  3. amazeui学习笔记--css(HTML元素3)--表单Form

    amazeui学习笔记--css(HTML元素3)--表单Form 一.总结 1.form样式使用:在容器上添加 .am-form class,容器里的子元素才会应用 Amaze UI 定义的样式. ...

  4. C# SocketAsyncEventArgs类

    Namespace:System.Net.Sockets Assemblies:System.Net.Sockets.dll, System.dll, netstandard.dll (Represe ...

  5. upf1

    创建supply net,两种方法 1. creat_supply_net VDD -domain PD_B 2. creat_supply_net VDD

  6. how to query for a list<String> in jdbctemplate?--转载

    原文地址:http://stackoverflow.com/questions/13354158/how-to-query-for-a-liststring-in-jdbctemplate   I'm ...

  7. Redis 哨兵(sentinel)模式集群配置(5.0.3版本)

    一.准备工作 1.系统环境:centos6.4 2.服务器六台(1主5从): 192.168.1.161(master) 192.168.1.162(slave) 192.168.1.163(slav ...

  8. UVA 11039 - Building designing 水题哇~

    水题一题,按绝对值排序后扫描一片数组(判断是否异号,我是直接相乘注意中间值越界)即可. 感觉是让我练习sort自定义比较函数的. #include<cstdio> #include< ...

  9. shrio 权限管理filterChainDefinitions过滤器配置(转)

    /** * Shiro-1.2.2内置的FilterChain * @see ============================================================= ...

  10. c#.net公共帮助类

    c#.net公共帮助类 比较全面的c#帮助类 比较全面的c#帮助类,日常工作收集,包括前面几家公司用到的,各式各样的几乎都能找到,所有功能性代码都是独立的类,类与类之间没有联系,可以单独引用至项目,分 ...