mingw制作dll

1、配置mingw环境,下载使用的mingw下的库

windows和linux中都可以

(windows中gxx命令)

(linux中i686-w64-mingw32-gxx和x86-w64-mingw32-gxx)

2、dll的头文件

#ifndef _DLLTEST_H

#define _DLLTEST_H

#include <stdio.h>

#define EXPORT __declspec(dllexport)

extern "C"

{

int EXPORT my_dll(void);

}

#endif

注释:如果为cpp的头文件不用添加extern “C”

把需要在外部使用的函数都用EXPORT定义

3、使用gcc或g++编译相应的文件

a、下面的命令行将这个代码编译成 dll

gcc dlltest.c -shared -o dlltest.dll -Wl,--out-implib,dlltest.lib

其中 -shared 告诉gcc dlltest.c 文件需要编译成动态链接库。-Wl 表示后面的内容是ld 的参数,需要传递给 ld。 --out-implib,dlltest.lib 表示让ld 生成一个名为 dlltest.lib 的导入库。

如果还需要 .def 文件,则上面的命令行可以写为:

gcc dlltest.c -shared -o dlltest.dll -Wl,--output-def,dlltest.def,--out-implib,dlltest.a

b、如果不能生成lib导入库,需要使用dll来生成lib导入库(在vs中使用是需要生成相应的导入库)

使用pexports来生成def文件(pexports需要下载,将pexports.exe放在mingw的bin目录下即可)

pexports dlltest.dll > dlltest.def

使用lib来生成lib导入文件(lib需要下载,将lib.exe放在mingw的bin目录下,同时放入相应的依赖库)

lib /machine:ix86 /def:dlltest.def

4、根据需要在vs中调用相应的dll、lib库

时间: 10-08

mingw制作dll的相关文章

MSVC vs. MinGW 之dll玩转攻略手记[转]

一份粗糙的研究记录,有待补完和整理. MinGW:c -> o           gcc -c a.cc -> exe         gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)o -> exe         gcc a.o b.o ... -o main.exec -> dll,def,a   gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba

文件转换dll mingw

MinGW:c -> o           gcc -c a.cc -> exe         gcc a.c libs.o -o a.exe (从主程序a.c,附加libs,生成a.exe)o -> exe         gcc a.o b.o ... -o main.exec -> dll,def,a   gcc a.c -shared -o a.dll -Wl,--output-def,a.def,--out-implib,liba.aa -> dll      

利用vs2010制作C语言 dll文件,并在其它程序中调用该dll文件

一.为什么需要dll 代码复用是提高软件开发 效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架, 如ATL.MFC等,它们都以源代码的形式发布.由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”.“白盒复用”的缺点 比较多,总结起来有4点. 暴露了源代码: 容易与程序员的“普通”代码发生命名冲突: 多份拷贝,造成存储浪费: 更新功能模块比较困难. 实际上,以上4点概括起来就是

WIN7+VS2010 制作与调用DLL

***************************************转载请注明出处:http://blog.csdn.net/lttree******************************************** 嗯哼~之前帮老师做的那个模块,不用做了=  =. 做了近十天,结果跑了13分钟 人家,秒级别的,甚至毫秒级的速度.... 哎.... 跪拜ING,2000+ X 2000+阶矩阵,有乘法,点乘,转置,求逆,一系列操作, 而且,乘法至少要进行40+次,求逆也要进行

利用openssl管理证书及SSL编程第3部分:将MinGW编译的openssl dll导出def和lib供MSVC使用

将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.dll 然后用下面的脚本生成Windows MSVC需要的模块定义文件(.def, .lib和.exp), 然后就可以在VC中使用了. 前提系统要安装VS. 系统要求: Windows7+VS Studio (2008 and later)+MSYS 1) 根据32位dll生成模块定义文件的pytho

Qt技巧:Win7下打包发布Qt程序(解释的比较清楚,把exe和dll伪装合并成一个文件)

转自:http://www.stardrad.com/blog/qt-5%E7%A8%8B%E5%BA%8F%E5%9C%A8windows%E4%B8%8A%E7%9A%84%E5%8F%91%E5%B8%83/ http://blog.163.com/[email protected]/blog/static/1582209320132291718389/ 最近做了个qt的程序,但是发布程序比较困难,因为qt5有着比较多的dll,如下两篇详述了qt dll依赖库,以及如何查询自己工程所用的d

LoadRunner 性能测试脚本

1   概述 脚本录制编写是性能测试的一个重要环节.在性能测试过程中,虚拟用户模拟真实用户使用被测系统,这个"模拟"的过程正是通过性能测试脚本来实现的.因此,编写一个准确无误的脚本对性能测试有至关重要的意义.完成性能测试脚本包括两个步骤:脚本录制和脚本编写,本文重点关注脚本编写. 2   脚本录制 2.1.录制方式 HTTP协议脚本录制可选两种方式:基于HTML和基于URL.选择哪种录制方式的原则如下:基于浏览器的HTTP应用系统选择HTML,基于其他方式的HTTP应用系统选择URL.

QT-1-环境搭建QT5.4.1&amp;MinGW4.9.1

1.最近在电脑上尝试了搭建QT的环境,原本准备利用VS2013+QT5.51环境,虽然安装很容易但是部署程序时,我是没能做到部署到其他机器,原因还是DLL搞不定: 2.参考友善之臂的MiniTools的文件,发现友善支臂的这个软件是用MinGW的DLL,并且这个软件在XP.WIn7.WIn8.WIn10都安装成功,所以尝试QTCreate和MinGW搭建环境并部署: 3.QT下载地址 http://www.qtcn.org/bbs/read-htm-tid-1075.html 选择Qt 5.5.

【Unity游戏开发之二】定制Debug.log输出

环境:Unity开发时会有很多的Debug.log输出测试 问题:最后游戏发布的时候,不希望在Produce发布环境也输出大量的日志,官方目前也没有正统的做法. 解决方法1: 重新封装 将Debug.log重新封装,自己添加开关. using UnityEngine; using System.Collections; public class Debuger { static public bool EnableLog = false; static public void Log(objec