codeblocks创建和使用静态库(C语言)

静态库  (扩展名为 .a 或 .lib) 是包含函数的文件,用于在link阶段整合执行程序,动态链接库(扩展名  .dll)是不在link阶段整合进执行程序中的。

DLL文件在执行阶段动态调用

下面我们将用免费的开发工具CodeBocks开发静态库

创建静态库

启动Codeblocks并创建一个类型为 "Static Library" (File/New/Project/Static Library/Go)的项目。

 

给项目取一个名字("malibrairie" for instance ), 并分配一个目标目录("C:/essai" for instance )

 

删除main.cpp文件中的默认内容。按照下面的内容输入到程序中。

void cinq(int *i)
{
int n;
n=*i;n=5*n;
*i=n;
}

 

选择"Build/Run"菜单。

 

Codeblocks立即生成库文件到 "C:/essai/malibrairie" 目录并取名 "libmalibrairie a"。

 

Codeblocks 和 Devcpp 生成扩展名为 ".a" 的库文件,Visual Studio将生成扩展名为 ".lib"的库文件。

我们下面使用这个库文件。

库文件 "libmalibrairie.a" 已经被创建。

Use the static library

Create a new project with the type "Win32 GUI".

 

选择应用程序类型 "Frame based"。

 

取名 ("monprogramme" ) 并选定项目目录 ("C:/essai" )。

 

删除main.cpp默认的代码然后将代码替换为下面的代码用于测试我们的静态库。

#include "windows.h"
extern "C" void cinq (int *);
int APIENTRY WinMain(HINSTANCE h1,HINSTANCE h2,LPSTR l,int n)
{
int x;
char texte[80];
x=2;
cinq(&x);
wsprintf(texte,"%d",x);
MessageBox(NULL,texte,"",MB_OK);
return 0;
}

 

通常, Codeblocks并不知道库文件被使用和它的位置,我们必须声明库文件,让它在链接的时候不会出错。选择菜单 "Project/Build options/Linker Settings" 添加"libmalibrairie.a"库文件。(亲自测试,需要在linker搜索目录添加库文件的目录)。

 

点击 "Build/Build and run"。程序正常运行。

在apue中使用-lapue库的时候,直接写成apue。。因为该静态库文件已经加入到/usr/lib/libapue.a中了。。

时间: 2024-09-16 17:56:50

codeblocks创建和使用静态库(C语言)的相关文章

演练:创建和使用静态库 (C++)

我们将创建的下一个库类型是静态库 (LIB). 使用静态库是重用代码的一种绝佳方式. 您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可. 本演练演示如何完成以下任务: 创建静态库项目. 向静态库添加类. 创建引用静态库的控制台应用程序. 在应用程序中使用静态库的功能. 运行该应用程序. 本主题假定您具备 C++ 语言的基础知识. 如果您是刚开始学习 C++,建议参阅 MSDN Library 中的此教程:第一层:C++ 初学者指南.

iOS创建与使用静态库_IOS

在日常项目开发中,不论是为了两个公司项目上的业务交流还是为了减少项目的编译时间,有的时候我们会把项目中的私密内容打包成静态库,或者是把项目中变动较少一部分打包成静态库以便提高编译效率,那么下面我们就来学习一下"iOS-静态库的创建与使用": (一)iOS静态库.动态库与Framework静态库与动态库的区别 (1)什么是库? 库(Library)直白一点说就是一段编译好的二进制代码,加上头文件就可以供别人使用;(例如: iOS中Objective-C编译下的.h和.m文件,打包静态库后

C++windows内核编程笔记day11 win32静态库和动态库的使用

windows库程序: 静态库: 源代码被链接到调用的程序或动态库,被调用时,代码最少有1份,文件后缀.LIB 动态库: 函数被程序或其他动态库调用,被调用时,代码只有1份,文件后缀.DLL 静态库(C语言): 创建时,选择文本类型文件,输入Clib.c,设置输出路径 ../lib/Clib.lib int Clib_add(int a,int b) {return a+b; } 同一上工作区,建立控制台程序(.c文件)调用静态库: #include<STDIO.H> #pragma comm

关于Linux静态库和动态库的分析

原文:http://linux.chinaunix.net/techdoc/net/2009/02/04/1060670.shtml 1.什么是库 在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的本质不同,因此二者库的二进制是不兼容的. 本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库). 二者的不同点在于代码被载入的时刻不同.静态库的代码在编译

C++静态库与动态库

C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书<程序员的自我修养--链接.装载与库>. 什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.库有两种:静态库(.a..lib

Linux 静态库&amp;动态库调用

1.什么是库在windows平台和linux平台下都大量存在着库.本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行.由于windows和linux的本质不同,因此二者库的二进制是不兼容的.本文仅限于介绍linux下的库.2.库的种类linux下的库有两种:静态库和共享库(动态库).二者的不同点在于代码被载入的时刻不同.静态库的代码在编译过程中已经被载入可执行程序,因此体积较大.共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小.3.库存在

C语言的静态库与共享库

1库的概念 2静态库 2-1 静态库的概念 2-2 静态库的创建 2-2-1 静态库创建的命令 2-2-2 静态库创建的准备工作 2-2-3 创建静态库的例子 2-3 静态库的使用 2-3-1 静态库使用的命令 2-3-2 静态库使用的例子 3共享库动态链接库 3-1 共享库的概念 3-2 共享库的创建 3-2-1 共享库的创建命令 3-2-2 共享库的创建例子 3-3 共享库的使用 3-3-1 共享库的使用命令 3-3-2 共享库的使用例子 4不使用库的方法 1.库的概念 函数库是由系统建立的

平台-关于windows下创建静态库和动态库的问题

问题描述 关于windows下创建静态库和动态库的问题 windows下的库是跨平台的吗,比如我用qt写了个动态库,可以再其他平台用吗 解决方案 Qt是跨平台的,可以在其他平台下使用. 解决方案二: 当然不是,dll只能在windows上用.但是不排除别的操作系统可以通过自身的模拟去兼容.linux下的wine连windows下的exe都能兼容. qt是跨平台的库,但是并不是二进制文件跨平台,而是相同的源代码用不同的编译器/链接器编译,实现的跨平台. 解决方案三: winfdows上的动态库,静

在Xcode中创建静态库,并使用Target支持不同平台

      在项目的进行中,即使很忙的项目,花一定的时间重构项目都不失为一件必须做的事.即使没到生死攸关也和项目的健康发展和按时提交 以及老生常谈的后期维护都有很大的关系.       在iOS项目开发中,重用代码的方法有很多种.一般来说,你可以把代码以Template的方式提升成基类子类的形式或者以Strategy的方式提升成 组成的方式.但是当代码量相当大,且在多个项目中共用同一批代码文件的时候,就需要把这些代码组成静态库的方式服用了(在iOS项目中只能使用静态库). 也就是说把这些公用代码