mingw制作dll

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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库



以上是关于mingw制作dll的主要内容,如果未能解决你的问题,请参考以下文章

使用 mingw 遵循简单的 c++ DLL 教程时出错

我需要制作一个opencv 64 exe(错误无法加载程序入口点)

MinGW 在 Windows 上制作

使用 MinGW/MSYS 制作“xz-5.2.1”时出错

mingw64下编译GLFW的Win64版本

Delphi制作DLL