Dev-Cpp/Mingw32 环境介绍(5)

计算机视觉与图像处理学习笔记(二)win32+mingw+opencv搭建 本来是想接着第二章学习的,但是感觉理论性有点强,了解基本概念后还是从Opencv来,遇到问题再切换。 关于opencv的下载与配置参考: http://opencv.org/downloads.html http://wiki.opencv.org.cn/index.php/Codeblocks_MinGW_openCV 阅读详情

Dev-Cpp/Mingw32 环境介绍(5)


上文回顾:


上文《Dev-Cpp/Mingw32 环境介绍(4)》我们介绍了如何使用 静态连接库。今天我们介绍如何制作自己的Mingw32的静态链接库。至于Win32下的那种静态连接库我想熟悉Win32的人应该很清楚如何制作。所以我们这里就不做介绍了。

 

第八章 制作自己的静态链接库


  这是第八章,八这个数字很多人都喜欢。我也一样。(感觉好迷信啊。)这一章我们要来制作静态链接库,我相信各位一定会很高兴的。
  首先我先简单介绍一下静态链接库的作用。我们知道,C/C++程序生成目标代码的过程有,编写代码,编译代码,连接代码,生成目标代码。在连接代码的时候,会将编译后的二进制代码连接成目标代码。但是,有些时候。我们想让程序导入必要的代码,而不想导入无用的代码到我们的程序中。我们该如何呢?很简单,使用静态连接库。使用它我们就可以实现将在程序中使用的函数导入的目的。
  下面我们来一步步的学做静态链接库并且学会如何使用。
  我们现在先写一段代码,你可以用Dev也可以用记事本也可以用任何你喜欢的文本编辑器。像我就比较喜欢vi或者emacs作为平时的文本编辑器。话说远了,现在言规正传。我们写下下面的代码。

//HelloWorld.c

#include <stdio.h>

void HelloWorld(void)
{
        printf("Hello World");
}

上面那段C代码各位应该很熟悉的吧,那么经典的Hello World好让我怀念啊。保存为HelloWorld.c以后我们就开始生成了。
首先,我们先编译HelloWorld.c

gcc -c HelloWorld.c -o HelloWorld.o

这样我们得到一个二进制的文件HelloWorld.o

接着我们生成静态库。

ar cqs libHelloWorld.a HelloWorld.o

这样我们党额静态链接库就好了。如果有需要可以将其他的二进制文件名加HelloWorld.o的后面将他们连接成一个静态链接库。另外,生成的静态库文件名必须为lib*.a

好了,现在我们来使用我们的库吧。

接下来,我们为了能够使用方便,写一个如下头文件。

//HelloWorld.h
void HelloWorld(void);

接着我们开始使用我们刚才生成的静态库。写一个main.c的文件。

//main.c

#include "HelloWorld.h"

int main(void)
{
        HelloWorld();
        return(0);
}

使用gcc编译,假设我们这里所有的文件都保存在同一个目录下。

gcc -c main.c -o main.o

然后我们连接程序。

gcc main.o -o main.exe -L"./" -lHelloWorld

如果顺利我们会得到一个main.exe的文件。

在控制台下输入main.exe或者main就可以出现 Hello World 这组单词。

看了上面的文章是否很兴奋想要生成自己的静态链接库?其实,我个人觉得mingw32生成静态链接库要比VC生成的简单。不知道你有没有这样的感觉。

当然,如果你要在Dev下使用静态连接库,也是可以的。方法我在上一章已经说过了。只是,如果你要使用自己的库必须设置路径。

只要在连接器参数中添加 -L"你的库的所在的文件夹" 或者 将你的库保存到Dev安装目录中的lib目录中。

好了,本文就介绍到这里。如果有什么问题,可以在这里留言。

问外音:


这篇文章其实我真的很喜欢,不是文章喜欢,而是内容很喜欢。不知道各位如何想。这里介绍了一个生成静态库的方法,感觉比VC生成的要简单。其实在gcc的Linux平台下生成动态连接库还要比VC下生成不知道要简单多少倍了。如果说Win32中用于开发最好的平台是win2000那么,在那么x86系统中用于开发的平台莫过于Linux了。这章的内容也许对许多的程序员都有些陌生,我实在担心各位会在实践中会碰到问题,所以在这里还是希望各位在遇到困难时多到这里提问。最后还是我的一句名言:不论是程序还是思想唯有通过不断的交流才能愈加完善。(看过《古畑任三郎》么?主角总喜欢在发表观点后,说一句:我是古畑任三郎。感觉我也和他一样了。不过,这的确是一部不错的影片。至少比国内许多侦探片都好,没有额外的剧情,没有你你我我的爱情。纯粹是从一个破案的角度来拍摄的。推荐各位看看。)

 

STUDIO软件开发组

北斗星君(黄庠魁)

Dev-C++配置EasyX图形库完整指南:从原理到实践 图形编程是计算机科学中可视化交互的重要领域,其核心原理是通过调用底层图形接口实现像素级绘制。在Windows平台,GDI(图形设备接口)是基础的图形系统API,而EasyX库正是对GDI的高度封装,极大简化了图形编程的学习曲线。对于使用Dev-C++搭配MinGW编译器的开发者,由于EasyX官方仅支持MSVC编译器,直接集成会遇到库文件格式不兼容的技术障碍。通过适配层方案,将MSVC格式的静态库转换为MinGW可识别的.a格式,成功解决了这一跨编译器兼容性问题。本指南基于Dev-C++ 5.11和TDM- 阅读详情

相关推荐

Dev-Cpp/Mingw32 环境介绍(1)

Dev-Cpp/Mingw32 环境介绍(1) 前言  对于现在越来越多得关于编程方面得问题和商业公司对版权问题的担心。所以向各位推荐一款类似于VC的IDE。这款IDE所使用的编译程序是 GCC的Win32版本 Mingw32。而IDE本身也是GPL协议的产物。所以,不论是商业用户,还是个人用户都能够自由的使用她,而不必为使用盗版软件而提心吊胆的。另外,由于Mingw32是GCC的

北斗星君的专栏 2万+

Qt+GDAL开发笔记(一):在windows系统mingw32编译GDAL库、搭建开发环境和基础Demo

全球北斗定位终端开发,调试工具要做一个windows版本方便校对,北斗GPS发过来的是大地坐标,应用需要的是经纬度坐标,所以需要转换,可以使用公式转换,但是之前涉及到了一个项目使用WGS-84,最终选择了GDAL库进行转换。大地坐标(Geodetic coordinate)是大地测量中以参考椭球面为基准面的坐标,地面点P的位置用大地经度L、大地纬度B和大地高H表示。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+

Codeblocks的libwinmm.a库文件

Codeblocks的libwinmm.a库文件

ACLLib 配置时lib文件找不到解决方法

3. 根据自己机器是32位还是64位来选择编译类型,如果是32位的机器选择MinGW32位方式,如果是64位的机器建议选择TDM的64位方式;1. 如果还在使用4.9.9.2的Dev C++,一定要升级到5以上,建议都升级到最新的5.10的版本;1. 偷懒的,打开acllib.c,找到“TransparentBlt”所在的行,把整行注释掉;若还是找不到lib文件,建议重装DEV C++,并按照默认目录安装,重复上述操作即可。首先,lib一定存在电脑中!找不到lib文件是因为路径找错了。

GKDf1sh 2240

STM32F103C8T6+A4988驱动42步进电机全流程(附接线图+代码解析)

本文详细介绍了使用STM32F103C8T6单片机与A4988驱动模块控制42步进电机的完整流程。内容涵盖硬件接线图解析、电流设置、GPIO驱动代码编写以及细分控制等核心实践,旨在帮助嵌入式开发者和DIY爱好者快速实现精准运动控制,适用于3D打印机、CNC等需要精密定位的项目。

Python的专栏 792

World Creator地形导入UE

导出预设选择高度图(heigh map)格式选择PNG 16位,或者RAW 16位,需要反转y轴(与虚幻不同),命名格式会自动带一个× , 将×改成_ 或者删掉自己命名 (虚幻名称不支持x符号)导入虚幻 , 修改Z轴 , 就是用 地形最高 - 地形最低 , 然后除以512 , 再乘以100。把这个数字填入Z轴缩放 , 点击生成即可。

UE星空 2154

windows下用mingw32+sdl进行简单2d游戏开发(c语言)

1、下载sdl库:http://www.libsdl.org/release/SDL-devel-1.2.15-mingw32.tar.gz 2、下载sdl_image库:http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.12-VC.zip 3、在mingw32/include下建立SDL文件夹。把s...

沙舟狼客 472

基于KiCad的STM32最小系统设计实战案例(含PCB布线)

手把手带你用KiCad完成STM32最小系统设计,涵盖原理图绘制、封装匹配、规则约束设置及关键信号PCB布线技巧;全程基于开源EDA工具KiCad,强调实操细节与常见坑点规避。

weixin_42452483的博客 356

在Windows系统中配置32位和64位的GCC编译环境

在Windows系统中配置32位和64位的GCC编译环境

xiangru的博客 2992

Type-C快充移动电源芯片避坑指南:IP5356配置全流程(支持PD3.0)

本文详细解析了英集芯IP5356芯片在Type-C快充移动电源中的应用,提供了从芯片选型、原理图设计、PCB布局到PD协议调试的全流程实战指南。文章重点剖析了如何避免散热、EMI及协议握手等常见设计陷阱,并分享了量产前的关键测试验证方法,旨在帮助硬件开发者高效打造稳定可靠的快充产品。

weixin_29235525的博客 848

深入解析i2cdetect:从基础命令到高级读写操作

本文深入解析Linux下i2cdetect工具,从基础安装、总线扫描到高级读写操作。作为i2c-tools的核心组件,i2cdetect是硬件调试的得力侦探,能快速识别I2C总线上的设备地址。文章还涵盖了i2cdump、i2cset、i2cget等进阶工具,并介绍了如何在C程序中调用读写接口进行嵌入式开发,是掌握I2C通信调试的实用指南。

weixin_29189987的博客 371

Dev-C++配置Allegro 5图形库完整指南:从环境搭建到项目部署

在C/C++游戏与图形编程领域,第三方库的集成是开发者从控制台程序迈向图形化应用的关键一步。其核心原理在于通过配置编译器的头文件搜索路径与链接器的库文件路径,将外部功能模块与用户代码进行绑定。这一过程的技术价值在于,它使开发者能够利用成熟、高效的底层库(如Allegro)快速实现窗口管理、图形渲染、音频播放等复杂功能,而无需重复造轮子。常见的应用场景包括2D游戏开发、多媒体演示程序以及图形化教学工具的制作。对于使用轻量级IDE Dev-C++配合MinGW编译器的初学者而言,配置Allegro 5库常会遇到

weixin_30235225的博客 409

STM32F407+LAN8720网口不通?别慌,手把手教你用CubeMX和HAL库搞定RMII配置与调试

本文详细介绍了STM32F407与LAN8720网口不通的全面排查与解决方法,涵盖硬件检查、CubeMX配置、PHY芯片初始化和LWIP协议栈优化。通过RMII接口配置、时钟树设置和PHY芯片调试,帮助开发者快速定位并解决网络连接问题,提升嵌入式网络开发效率。

weixin_30457551的博客 506

Dev C++ 6.7.5 正式中文版(TDM-GCC 4.8.1)

Dev-C++正式版是款编程行业中经常使用的程序编译器。Dev-C++最新版集合了GCC、MinGW32等众多自由软件,可以取得最新版本的各种工具支持。并且Dev-C++还提供高亮度语法的显示模式,以减少程序编码的编辑错误,还有完善的调试功能。1、DevC++集成开发平台:DevC++ 是一款全功能的C/C++集成开发环境,您可以使用这一开发平台创建、编辑并且下载应用到任何一款BCM模块设备中。

快乐的程序猿 8776

AI视频生成技术研究报告:现状、挑战与展望

AI 视频生成技术概述:介绍 AI 视频生成技术的基本概念,回顾其发展历程,从早期依赖图像拼接的简单生成方式,到如今融合多种先进技术的复杂模型应用,梳理技术演进的关键节点和重要突破。同时,分析该技术在当前阶段的特点,包括生成视频的质量、速度、灵活性等方面,以及与传统视频制作方式的差异,阐述 AI 视频生成技术如何改变视频创作的流程和模式。技术实现路径分析。

daqsdfas的博客 4574

Python实现PDB文件预处理

蛋白质结构研究依赖PDB文件存储的三维结构数据,但原始文件常含无关的水分子、离子和非标准残基等干扰信息。本文介绍了一个基于BioPython的Python预处理脚本,可自动清理PDB文件,主要功能包括:1)移除短于阈值的蛋白质链;2)过滤非标准氨基酸;3)可选保留水分子和金属离子。该脚本逻辑清晰,支持批量处理,能显著提升结构比对、分子对接等分析前的数据准备效率,为后续生物信息学研究提供更纯净的结构数据基础。

Protein Designer的博客 568

C语言软件大全 好用的C语言软件排行

探索编程世界的核心工具,C语言软件大全揭示了当前最热门、高效实用的C语言软件排行榜。无论是初学者还是资深开发者,这里汇集了�

bucenggaibian的博客 426

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ARM汇编中MAP与FIELD指令的内存管理实践

在嵌入式系统开发中,内存管理是核心基础技术,直接影响系统性能和稳定性。ARM架构通过存储映射机制提供硬件级内存控制能力,其中MAP和FIELD指令组合实现了声明式内存布局定义。这种技术通过基地址绑定和自动偏移计算,既保证了内存访问的安全性,又提升了寄存器操作的效率。在实时操作系统、外设驱动开发等场景中,开发者常用其定义数据结构布局、管理外设寄存器组。特别是在RTOS任务控制块、内存分配器实现等典型应用中,结合缓存行对齐等优化技巧,能显著提升ARM处理器的执行效率。通过本文介绍的GPIO驱动开发等实战案例,可

weixin_33690367的博客 482

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Dev-Cpp/Mingw32 环境介绍(2)

Dev-Cpp/Mingw32 环境介绍(2)上文回顾:  上文(《Dev-Cpp/Mingw32 环境介绍(1)》)我们知道了该如何安装和使用Dev-Cpp。并且,知道了一些有关Mingw32的一些用法和一些有关程序的介绍和使用方法。学会了一些基本操作的方法。如新建项目,编译项目等。这一次,我们将继续上一次的内容。第三章 为你的Dev-Cpp安装开发包   对于许多程序员来说

北斗星君的专栏 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Dev-Cpp/Mingw32 环境介绍

http://wxjiao.blog.hexun.com/1945078_d.html     Dev-Cpp/Mingw32 环境介绍 [转贴 2005-12-30 14:37:51]   字号:大 中 小 文章来源: 点击查看原文:Dev-Cpp/Mingw32 环境介绍 Dev-Cpp/Mingw32 环境介绍(1)   前言

zenwanxin的专栏 1万+

Dev-Cpp/Mingw32 环境介绍(12)

Dev-Cpp/Mingw32 环境介绍(12)上文回顾:在上一篇文章中,我们了解了如何在MinGW中设置GTK和使用GTK。从这一篇开始,我我们就要开始进入中级篇了。也就是说,我们主要以MinGW和其他GCC在Win32下的使用为主。而不是如同原来只介绍那些操作IDE,安装组件等。如果说,以前我们是在跑道上,那么现在我们就要起飞了。所以,我们会比较注重以MakeFile来说明程序的配置。同时会带

北斗星君的专栏 7377

《Dev-Cpp/MinGW32 环境介绍》改版初搞

《Dev-Cpp/MinGW32 环境介绍》改版初搞 背景: 自从2004年8月第一篇《Dev-Cpp/MinGW32 环境介绍》问世以来,这一系列的文章可谓是受到广大变成爱好者的欢迎和拥护。可以说,这一系列的文章是我高中时代的一份代表作。原本只是出于好玩所写的文章,却成为了人们互相传阅的文章,这一点是我所没有料到的。正如我所说的,这些文章是我高中所写的,所以,由于时间上的因素,

北斗星君的专栏 1万+

Dev-Cpp/Mingw32 环境介绍(4)

Dev-Cpp/Mingw32 环境介绍(4)上文回顾:上文《Dev-Cpp/Mingw32 环境介绍(3)》向各位介绍了有关使用GDB调试程序的简单方法。本文我们将会看看Mingw32如何来使用静态连接库。虽然本文出炉的时间的确是有些慢了点。不过我想各位应该能够理解的。第七章 在你的程序中使用静态连接库   在Windows中也许各位都会熟悉以obj和lib结尾的文件。这

北斗星君的专栏 9046
上一篇: Dev-Cpp/Mingw32 环境介绍(4)
下一篇: 月光探案集(1)
VisionCat
博客等级 码龄24年 459粉丝 83原创
评论 33
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值