dev-c++创建lib(静态链接库)文件的实现步骤

目录
  • 第一步:制作静态链接库
  • 第二步:链接静态链接库
    • 方法一:使用项目
    • 方法二:修改编译选项
  • 第三步:使用库函数
    • 方法一
    • 方法二:

虽说dev-c++适合初学者,但是它的功能还是很强大的。那如何用它制作一个lib(静态链接库)呢?

第一步:制作静态链接库

1.打开dev-c++,选择“新建-项目”,如下图所示。

2.选择“Static Library”,并选择编程语言(c和c++无所谓)以及给项目设置名称。

3.选择你要保存的位置。

4.在新建的文件里添加函数,我这里添加了两个:一个叫hello,用来弹出一个对话框;一个叫add,返回两个数的和。

5.保存文件(文件名可以随便选,我这里选择了main.cpp)

6.点击“编译”按钮。

编译完成后,可能会出现以下界面:

这时,有人会觉得很奇怪:“我的程序没问题呀,为什么它报错呢?????”

仔细一看,它只不过是把使用的命令给显示了一遍,而不是报错。

7.在生成的文件中找到一个.a文件(我这里是hello.a,因为项目名是hello,你的可能不一样),这就是生成的静态链接库文件。

第二步:链接静态链接库

库做好了,但是我们编程的时候怎么用它呢?方法就是链接。在自己的代码中链接静态链接库,有两种方法,各有优劣。

方法一:使用项目

1.新建一个console application项目。(不能是源代码,必须是console application,如果你像我一样不喜欢console application,请使用方法二)

2.选择保存位置。

3.打开“项目属性 -> 参数”。

4.点击“加入库或对象”,把刚才的库加进去。

5.点击“确定”,大功告成!

优点:

1.只有这个项目的文件才会链接该库,别的文件不会。

2.网上比较常见。

缺点:

1.只能新建console application,不能新建源代码。(说实话,我非常不喜欢console application)

因此,这种方法适合链接不太常用的库。

方法二:修改编译选项

1.将自己的库重命名,命名为“libxxx.a”,例如“libhello.a”。

2.新建一个源代码(这回不用console application了,我好开心!)

3.打开“工具 -> 编译选项。”

4.找到“在连接器命令行加入以下命令”,在那个框里加入以下命令(如果框里已经有命令了,就在末尾加一个空格,再输入下面的命令):

-l你的库名(去掉开头的lib和结尾的.a)

举个例子:我的库名是libhello.a(见第1步),那么我应该加上命令:

-lhello

注意,以下3种写法都是错误的:

-llibhello.a
-llibhello
-lhello.a

再比如,你的库名是libtest.a,你应该加上:

-ltest

示例图(以我的库为例):

能不能在-l和库名之间加一个空格呢?当然可以!

5.还没完!找到“目录 -> 库”。

6.把你的库的路径添加进去。怎么添加?点击右下角的“浏览”按钮,找到库的路径,点“确定”。

7.点“添加”,再点“确定”,OK!

优点:

1.可以新建源代码,而不是我讨厌的console application。。。

缺点:

1.每次会自动链接该库,导致可执行文件体积巨大。

2.网上不常见,遇到了问题很难解决。

因此,这种方法适合经常使用的库。

第三步:使用库函数

万事俱备,只欠东风!库也造好了,链接也链接了,就差调用库函数了!怎么调用呢?还是有两种方法。

注意:如果你是在console application中链接静态链接库,则你只能在项目文件中调用库函数;如果你修改了编译选项,则每一个程序都可以调用库函数!

方法一

1.在需要调用库函数的代码里,写出库函数的函数原型。(必须写函数原型,否则会报错!)

2.直接调用函数即可。(下图为完整代码)

#include <cstdio>
void hello();
int add(int a,int b);
int main(){
	printf("%d",add(1,2));
	hello();
	return 0;
}

运行效果:

优点:操作简单。

缺点:只有你自己知道函数原型,如果别人使用此函数,就不得不向你询问函数原型。

因此这种方法适合自己使用库函数。

方法二:

1.把函数原型写在一个头文件里。

2.引入头文件,就可以使用库函数了!

优点:别人可以知道函数原型。

缺点:比较麻烦。

因此,这种方法适合共享给别人。

到此这篇关于dev-c++创建lib(静态链接库)文件的实现步骤的文章就介绍到这了,更多相关dev-c++创建lib内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Dev C++ 安装及使用方法(图文教程)

    目录 一.下载 二.安装 三.使用 四.高级设置 Dev C++ 是一款非常好用,简约的C/C++开发工具.可以减少很多创建工程的繁琐步骤,很快的进行开发.对于只用于来写代码的人来说,是比较轻量以及极速的. Dev C++ 是一个windows下的c和c++程序的集成开发环境.它使用mingw32/gcc编译器,遵循c/c++标准.开发环境包括多页面窗口.工程编辑器以及调试器等,在工程编辑器中集合了编辑器.编译器.连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能够

  • C++中DeviceIoCteatol的用法实例

    本文是一篇译文,主要以实例形式讲述了C++中DeviceIoCteatol的用法.分享给大家供大家参考.具体方法如下: 应用程序代码如下: 复制代码 代码如下: DWORD dwBytesReturned = 0;      BYTE bytBuffer_1[512];      BYTE bytBuffer_2[512];      CHAR string[2048];      HANDLE hDevice, hDriver;      BOOL bRet;  bRet = DeviceIo

  • Windows下使用Dev-C++开发基于pthread.h的多线程程序实例

    一.下载Windows版本的pthread 目前最新版本是:pthreads-w32-2-9-1-release.zip. 二.解压pthread到指定目录 我选择的目录是:E:\DEV-CPP\Pthread 完成后,该目录会多出三个文件夹:Pre-built.2,pthreads.2,QueueUserAPCEx. 三.配置Dev-C++编译选项 1)点击"工具"→"编译选项"→"目录"→"c++包含文件",浏览到刚才解压

  • 详解Dev C++使用教程(使用Dev C++编写C语言程序)

    前面我们给出了一段完整的C语言代码,就是在显示器上输出"C语言中文网",如下所示: #include <stdio.h> int main() { puts("C语言中文网"); return 0; } 本节我们就来看看如何通过 Dev C++ 来运行这段代码. Dev C++ 支持单个源文件的编译,如果你的程序只有一个源文件(初学者基本都是在单个源文件下编写代码),那么不用创建项目,直接运行就可以:如果有多个源文件,才需要创建项目. 1) 新建源文件

  • 解决Devc++运行窗口中文乱码的实现步骤

    目录 一.问题描述 二.问题的产生原因 三.解决问题的方法 (一)使用旧版控制台 (二)更改dev++的编码为ans (三)将运行窗口更改为utf-8 一.问题描述 当你打开DevC++,编写好代码,编译…运行…发现执行结果中的中文,变成乱码.就像下图一样. 怎么办怎么办该怎么办呢? 憋慌!听我说 二.问题的产生原因 大家总能在各种地方,出现乱码的问题.其实就是由于编码的不同所导致的.比如devc++的运行窗口中文乱码,其实是因为运行窗口的当前代码页编码为GBK,然而你的运行文件编码确实utf-

  • Dev-C++调试方法的具体使用

    目录 写在前面 具体步骤 0. 确定编译器 1. 开启调试模式 2. 代码调试 写在前面 已经弃坑Dev-C++有一段时间了,但作为一款轻量且新手友好的IDE,它往往是入门C/C++以及刷算法题的绝佳选择.这里分享在Dev-C++上调试代码的方法,为后来者提供有用的信息. 我的dev-c++基本信息:版本 5.11,中文版,字体与背景自定义(无影响) 今天才发现原来源代码文件好像也可以调试?我之前用还是不行的,保险起见我以建立一个项目文件来做展示. 测试代码: #include <stdio.h

  • DEVC++实现推箱子小游戏

    推箱子小游戏(基于DEVC++),供大家参考,具体内容如下 #include<iostream> #include<stdio.h> #include<conio.h> #include <windows.h> using namespace std; void Game_Menu(HANDLE hout); void Game_description(HANDLE hout); void gotoxy(HANDLE hout, int x, int y);

  • dev-c++创建lib(静态链接库)文件的实现步骤

    目录 第一步:制作静态链接库 第二步:链接静态链接库 方法一:使用项目 方法二:修改编译选项 第三步:使用库函数 方法一 方法二: 虽说dev-c++适合初学者,但是它的功能还是很强大的.那如何用它制作一个lib(静态链接库)呢? 第一步:制作静态链接库 1.打开dev-c++,选择“新建-项目”,如下图所示. 2.选择“Static Library”,并选择编程语言(c和c++无所谓)以及给项目设置名称. 3.选择你要保存的位置. 4.在新建的文件里添加函数,我这里添加了两个:一个叫hello

  • 详解C++的JSON静态链接库JsonCpp的使用方法

    JsonCpp部署方法: 在http://sourceforge.net/projects/jsoncpp/中下载最新版本的jsoncpp库源码. 之后将jsoncpp-src-版本号-tar.gz解压出来,打开makefiles中的jsoncpp.sln进行编译,之后build文件夹下的vs71\debug\lib_json中会有一个.lib静态链接库. JsonCpp主要包含三种类型的class:Value Reader Writer. jsoncpp中所有对象.类名都在namespace

  • GCC 编译使用动态链接库和静态链接库的方法

    1 库的分类 根据链接时期的不同,库又有静态库和动态库之分. 静态库是在链接阶段被链接的(好像是废话,但事实就是这样),所以生成的可执行文件就不受库的影响了,即使库被删除了,程序依然可以成功运行. 有别于静态库,动态库的链接是在程序执行的时候被链接的.所以,即使程序编译完,库仍须保留在系统上,以供程序运行时调用.(TODO:链接动态库时链接阶段到底做了什么) 2 静态库和动态库的比较 链接静态库其实从某种意义上来说也是一种粘贴复制,只不过它操作的对象是目标代码而不是源码而已.因为静态库被链接后库

  • Go编译32位GNU静态链接库的方法

    Go链接库系统的难用可谓是人尽皆知,不同Go版本编译出来的不兼容,而且只支持GNU的,不能编译出Windows上的dll和lib. 本次有需求是将Go代码编译成32位GNU静态链接库. Go代码 编写代码如下: package main import "C" //export Add func Add(a, b int32) int32 { return a + b } func main() {} 注意我们必须把想要导出的函数显式使用//export Add注释标明,否则编译后不会产

  • C++封装静态链接库和使用的详细步骤

    目录 零碎记事 为什么要把程序封装成库 博主的环境 封装步骤 准备好待封装的程序 开始封装 配置项目 编译 找到编译好的静态库 打包 使用静态库使用步骤包含头文件 添加链接路径 源文件设置 项目设置 零碎记事 距离上次发博客已经有一年半了,转眼间我也是从做图像研究到了做游戏开发,说起来看看前面的博文,本来就有前兆的东西呢(笑)......因为主要还是在使用虚幻引擎,所以C++的东西会碰到多一些. 以后程序技术方面的文章就放博客,游戏设计相关的杂谈就放知乎那边吧,博主的知乎可以通过友链过去. B站

  • Linux静态链接库与模板类的处理方式

    在阅读本文之前,小编先给大家介绍一篇相关文章:Linux静态链接库使用类模板的快速排序算法 大家首先看下以上的文章对理解下面的知识点会有很大的帮助. 当模板遇到静态链接库会发生什么呢. 我们先按照常规思路去考虑一个静态链接库的步骤: 1.将某些功能提取出来,放进一个cpp文件,并将接口或者对外导出的类放在头文件中 2.gcc -c编译该文件,生成.o 3.ar命令将.o文件打包成.a,即静态链接库 4.编译main函数,并将该静态链接库链接,生成可执行文件. OK,按照这个思路,我们将之前写的快

  • VSCode无法打开源文件及无法打开链接库文件的解决方法

    目录 一.无法打开源文件 二.无法打开文件“XXX.lib” 一.无法打开源文件 依次点击“项目——配置属性——C/C++——常规”,在“附加包含目录”中加入.h文件所在的文件夹路径 二.无法打开文件“XXX.lib” 1.依次点击“项目——配置属性——链接器——常规”,在“附加库目录”中加入.lib所在的文件夹的路径 2.方法①:在“链接器”中找到“输入”,在“附加依赖项”中加入需要加入的xxx.lib;(要用;和其他链接库分隔开) 方法②:也可以用代码的方式链接进来 #pragma comm

  • Linux静态链接库使用类模板的快速排序算法

    快速排序的本质是从数组中选一个参考值ref,比该参考值的大的,将其放在ref的右边,比ref小的放在左边,然后不断的对两边重复执行该动作 我们先列出来快速排序的步骤: 1.从数组中选一个参考值ref,比该参考值的大的,将其放在ref的右边, 上面的动作将数组划分为两部分: A ref B A是比ref小的数组元素集合,它仍然是数组,B是比ref大的元素集合,它也仍然是数组 2.在对ref左右两边的元素重复上述动作,直到A和B都只剩下一个元素,那么排序就算完成了. 重点是如何分别选出来两个集合A和

  • CMake编译中的库文件和头文件链接你了解吗

    目录 外部库文件.头文件链接 指令 头文件搜索路径 链接库文件 实例 新建工程空间 定义src内容 编译 总结 外部库文件.头文件链接 指令 头文件搜索路径 INCLUDE_DIRECTORIES([AFTER|BEFORE] [SYSTEM] dir1 dir2 ...) [AFTER|BEFORE] :添加方式,默认 AFTER AFTER:在后方进行追加内容(新加入内容在后) BEFORE:在前方进行追加内容(新加入内容在前) dir:头文件路径地址,含有空格的路径应用双引号括起 链接库文

  • 链接库动态链接库详细介绍

    windows中,链接库分为两种类型:静态链接库.lib和动态链接库.dll.其中动态链接库在被使用的时候,通常还提供一个.lib,称为引入库,它主要提供被Dll导出的函数和符号名称,使得链接的时候能够找到dll中对应的函数映射. 静态链接库和动态链接库的作用相似,都是提供给其他程序进行调用的资源.其中,动态链接库的调用方法分隐式调用(静态导入调用)和显示调用(动态导入调用). 编译环境: Microsoft Visual Stdio 2010 -------------------------

随机推荐