静态库  (扩展名为 .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"。程序正常运行。

Codeblocks 添加库(undefined reference 错误的处理)的更多相关文章

  1. 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误

    原文:http://blog.csdn.net/chinazjn/article/details/7954984 ffmpeg移植到dm365上,遇到undefined reference错误: GA ...

  2. windows下codeblocks报错undefined reference to `WSAStartup@8'|

    Windows下C++Socket编程,调用WSAStartup函数报错:undefined reference to `WSAStartup@8'| 本人使用的是Codeblocks MinGW M ...

  3. 解决qt程序的链接阶段出现 undefined reference 错误

    错误的原因是我使用到了 QT Widgets 模块中的东西,但是makefile的链接的参数中没有 widgets.其实官网上提到了这个: http://doc.qt.io/qt-5/qtwidget ...

  4. 关于"undefined reference"错误

    这个错误换句话说: 链接的时候找不到实现的文件(谨记从这个入手!). 可能导致的原因有: 1. 没有链接库文件,包括静态库或动态库. 2. 链接文件的顺序问题,先后依赖问题,把被依赖的放后面. 3. ...

  5. inline函数出现 undefined reference 错误

    原因:你把inline函数的implementation放到cpp文件里肯定要报这个错误 正确的做法:把inline函数的声明和实现都放到header里,例如 // declaration: retu ...

  6. 由于link顺序错误导致的undefined reference

    其实我之前就遇到过这个问题,也强调过,GNU-G++在link阶段是依赖输入的.o或者.a文件的顺序的.如果顺序错误会导致undefined reference错误 见这篇随笔:http://www. ...

  7. 编译3.10内核 出现错误 “undefined reference to...." 解决方法

    向内核中加入C文件后.假设想编译进内核须要改动当前文件夹下的Kconfig文件和Makefile文件. 如:加入一个test.c文件到driver文件夹下,则须要改动Kconfig文件: config ...

  8. "undefined reference to" 问题解决方法 -链接问题

    最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...

  9. [转]undefined reference问题总结

    转自http://ticktick.blog.51cto.com/823160/431329 最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.t ...

随机推荐

  1. MSSQL显错注入爆数字型数据的一点思考

    Title:MSSQL显错注入爆数字型数据的一点思考 --2011-02-22 15:23 MSSQL+ASP 最近在弄个站点,密码是纯数字的,convert(int,())转换出来不报错,也不知道其 ...

  2. quartz2.2.1-测试02-通过servlet动态修改定时任务运行时间

    /* * To change this license header, choose License Headers in Project Properties. * To change this t ...

  3. Android Timer的使用

    1:服务端使用PHP <?php echo date('Y-m-d H:i:s'); ?> 2:activity_main.xml <RelativeLayout xmlns:and ...

  4. Mediator pattern(c++ 实现)

    概述: 假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片.但是我们不能把所有的功能罗列到一个ta ...

  5. Android 实现ActionBar定制

    我们在使用Android手机时,经常发现应用中的ActionBar和我们平时使用的ActionBar相差非常大.简单的说就是,其他应用的 ActionBar为什么那么绚丽,自己应用的ActionBar ...

  6. json与jsonp ajax

    今天在网上找了一下资料,发现这篇文章总结得好,果断转了:http://blog.csdn.net/superhosts/article/details/9057301

  7. UML建模之状态图(Statechart Diagram)

     状态图目录: 一.状态图简介(Brief introduction) 二.状态图元素(State Diagram Elements) 1.状态(States) 2.转移(Transitions) 3 ...

  8. openstack手动部署简单记录

    1,关于网络规划部分,之前写的都好好的了,浏览器TM的崩溃了,我写几天的笔记 记录全给我丢了,我TM的多心疼啊! 大致说了关于openstack手动安装关于网络规划的问题 第一种legacy netw ...

  9. git与svn对比

    git 与 svn 对比 git的使用不需要联机 SVN集中式版本控制:每个人的版本都是提交到服务器,服务器坏了就雪崩.git分布式版本控制:  安全,每人本地有个版本库,每个人都可以充当‘服务器 它 ...

  10. 解析Xcode把应用程序打包成ipa---解决打包完新版本itunes提示不是有效应用程序的问题

    Xcode把应用程序打包成ipa是本文要介绍的内容,不多说,先俩看内容.注意:本方法需要先制作假凭证编译于项目中,否则产生的ipa还是无法于iPhone中运行. 制作方法请参考: http://blo ...