MINGW64下的Makefile环境调用dll库_c:/mingw64/bin/make -f makefile.release_lit_wei的博客-程序员宅基地

技术标签: x86的C  

【前言】

        X86的64位PC机上,一般使用eclipse+mingw的编辑和编译环境来实现无界面和有界面的开发工作,之前使用eclipse搭建环境需要用到dll库,而eclipse使用mingw编译环境对dll的支持不是很好,一直无法正常添加dll库到工程中去,所以摒弃了eclipse的编辑界面,直接使用Makefile+mingw64来编译链接,直接使用source insight来编辑代码,非常清爽。

【目的】

        Makefile + Mingw64的环境,并调用dll动态库,来实现msys dos环境的c程序运行。

【方案】

         自己实现Makefile文件,代码目录组织如下:

         

        build存放.o文件,heads存放头文件,libs存放dll文件,src存放c源文件。

【实现】

        Makefile的具体内容如下:

# flags
CC = gcc
#CFLAGS = -Wall
LFLAGS = 

# args
RELEASE =0
BITS = 64
OBJ_DIR := build
INC_DIR := heads
SRC_DIR := src
LIB_DIR := libs
RUN_DIR := run

# [args] 生成模式. 0代表debug模式, 1代表release模式. make RELEASE=1.
ifeq ($(RELEASE),0)
    # debug
    CFLAGS += -g -I$(INC_DIR) -o0
else
    # release
    CFLAGS += -static -I(INC_DIR) -O3 -DNDEBUG
    LFLAGS += -static
endif

# [args] 程序位数. 32代表32位程序, 64代表64位程序, 其他默认. make BITS=32.
ifeq ($(BITS),32)
    CFLAGS += -m32
    LFLAGS += -m32
else
    ifeq ($(BITS),64)
        CFLAGS += -m64
        LFLAGS += -m64
    else
    endif
endif

.PHONY : all clean

# files
TARGETS := $(OBJ_DIR)\auto_test
OBJS = $(OBJ_DIR)/atest.o
OBJS += $(OBJ_DIR)/putil.o
OBJS += $(OBJ_DIR)/xml.o
OBJS += $(OBJ_DIR)/dlog.o
LIBS = $(LIB_DIR)/*.dll

all : $(TARGETS)
	move /Y $(OBJ_DIR)\\*.exe $(RUN_DIR)
$(TARGETS) : $(OBJS) $(LIBS)
	$(CC) $(LFLAGS) -o $@ $^

$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
	$(CC) $(CFLAGS) -c $< -o $@
	
clean :
	del /F /S /Q $(OBJ_DIR)\*.*

gcc编译链,需要先安装好mingw64的交叉编译链和path的系统环境变量设置。dll直接作为目标文件来参与链接,且不需要使用-l来指定以来的系统库。直接make和make clean来方便编译。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/luwei860123/article/details/105080535

智能推荐

mac_命令行下控制Wi-Fi_mac 命令行 查看网络适配器-程序员宅基地

Mac 命令行下查看当前 Wifi网络设备名称首先命令行输入networksetup -listallhardwareports在命令行中返回的结果中找Wi-Fi的设备名,通常是en0//...//omitted//...HardwarePort:Wi-Fi//找这个Device:en0 //这个就是设备名//...//omitted//...VLANConfigurations_mac 命令行 查看网络适配器

英文缩写短语-程序员宅基地

??? 数字:2 = to/too2B or not 2B = To be or not to be4 = for4ever = foreverA:A

Android子线程和更新UI问题-程序员宅基地

引子:情形1 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = ...

树莓派(一): 联网、固定ip、改为64位、内网穿透_work connection closed before response startworkco-程序员宅基地

买的4B版 4G内存树莓派,包括主板、电源、外壳、散热片。自己外接鼠标、键盘、HDMI线(它这个是小头,最好买机器的时候直接附带买了)一、WIFI联网树莓派连接显示器直接连接树莓派网线连接电脑登录 vim /etc/wap_supplicant/wap_supplicant.confctrl_interface=DIR=/var/run/wap_supplicant GROUP=netdevupdate_config=1#country=GBnetwork={ ssid="WIF._work connection closed before response startworkconn message: eof

laravel使用模型实现跨库连表_ims_ewei_shop_member-程序员宅基地

垮库连表代码 public $table='yts_account_shell_operate'; protected $guarded = [];//不可以注入数据字段 // 实现啊你垮库连表 public function getUserName(){ $instance = new zpMember(); // new 实例 ..._ims_ewei_shop_member

随便推点

树莓派 ffmpeg 编译选项-程序员宅基地

./configure --enable-libx264 --enable-encoder=libx264 --enable-decoder=h264 --enable-parser=h264 --enable-omx --enable-omx-rpi --enable-encoder=h264_omx --enable-hwaccel=h264_mmal --enable-decoder=h26

android 动画内存泄漏,Android-内存泄漏-ValueAnimator_风车下站立少年的博客-程序员宅基地

今天检查代码的时候发现了一个内存泄漏的问题,导致Activity内存一直无法释放,后来发现是Activity内部的全局变量mValueAnimator无法释放而导致的。代码分析我们先看到代码,为了实现一个动画效果,我们在Activity内放置了一个ValueAnimator的全局变量,并且调用开启动画的方法。private ValueAnimator mValueAnimator;private ..._valueanimator 内存泄漏

ε=(´ο`*)))_:ε=(′ο`*)))。-程序员宅基地

哪有什么选择恐惧症,还不是因为穷;哪有什么优柔寡断,还不是因为怂 ;哪有什么岁月静好,还不是因为有人替你负重前行。_:ε=(′ο`*)))。

数据库索引失效与判断是否命中索引_sqlserver 分区命中不了索引_爱学习的zzy的博客-程序员宅基地

什么是索引失效:使用索引查询某行数据,但数据库扫描全表进行查询时 叫索引失效;索引失效的几种方式:1、where中存在 or2、类型为char,查询条件时用int3、模糊查询时,%开头的查询4、not in5、where索引列有运算6、where中索引列使用了函数为什么要用索引:提升查询性能 ,缩短查询时间场景:8千万数据的表中查询一行数据,没有索引查询耗时500s+,使用索引查询耗时0.03s..._sqlserver 分区命中不了索引

Android嵌套滑动冲突-程序员宅基地

android在嵌套滑动的时候会产生滑动冲突。之前我也碰到,但是以前的笔记本丢失了,所以只能重新再写一章。一.会产生滑动冲突的情况那么什么时候会产生滑动冲突呢?比如你有个activity,activity的上半部分是一个布局,下半部分是一个可滑动控件(RecyclerView、ListView等),或者下..._android 嵌套滑动冲突解决

MUI 实现手机图片上传_mui 图片上传-程序员宅基地

由于公司自主研发APP,使用的是MUI框架。我做了其中头像图片上传的功能,在此分享下demo;如有不规范处,请多多指教,互相学习。第一次接触这个框架,踩了许多的坑 >_<步骤:点击选择图片 → 图片转BASE64发送到服务器 → 服务器解码写入流中,返回地址1.选择图片2.后台服务器解码3.上传完成D:\ tu..._mui 图片上传

推荐文章

热门文章

相关标签