在 VS 上开如何发使用 Mingw64 的 DLL

Posted 车斗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在 VS 上开如何发使用 Mingw64 的 DLL相关的知识,希望对你有一定的参考价值。

在 VS 上开如何发使用 Mingw64 的 DLL

系统要求

Win10 上安装了 VS2015, msys2 (mingw64 + gtk) (参考 https://blog.csdn.net/ubuntu64fan/article/details/117959904)

VS 上开发跨平台的窗口程序使用了 gtk (libgtk-3-0.dll),这个可以在 mingw64 的目录下找到。我的:

C:\\DEVPACK\\msys64\\mingw64\\bin

这个目录下的所有 dll 都是需要的。其中我的程序 gtkmap 需要链接到 libgtk-3-0.dll,因此需要以下3个文件供 VS 使用:

  • libgtk-3-0.def
  • libgtk-3-0.exp
  • libgtk-3-0.lib

这3个文件都是从 libgtk-3-0.dll 生成的。采用了 pexports-0.47

生成动态库的链接库(lib)

CMD 命令行窗口进入 libgtk-3-0.dll 所在目录(将 pexports.exe 放在同一个目录),打开Windows资源管理器,找到下面的目录:

C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC

将目录下的文件 vcvarsall.bat 文件用鼠标拖入 CMD 命令行窗口,按回车执行。这样 lib.exe 就能执行了。然后在 DOS 提示符后面输入下面的命令:

C:\\???\\> pexports.exe libgtk-3-0.dll > libgtk-3-0.def
C:\\???\\> lib.exe /DEF:libgtk-3-0.def /MACHINE:X64 /OUT:libgtk-3-0.lib

这样就生成了 64 位 VS 开发用的 lib 文件。其他 DLL 仿照此进行。

生成 libgtk-3-0.dll.a

libgtk-3-0.lib 和 libgtk-3-0.dll.a 这 2 种文件都一样的使用。msys64\\mingw64\\lib 目录下自带了 libgtk-3-0.dll.a,可将 libgtk-3-0.dll.a 直接在 VS 中填入为链接库的名称。

如何不存在,则采用下面的方式生成:

  1. 打开 mingw64 命令行工具,进入 libgtk-3-0.dll 所在目录(将 pexports.exe 放在同一个目录)。然后在提示符后面输入下面的命令:

    $ ./pexports.exe libgtk-3-0.dll > libgtk-3-0.def
    $ dlltool.exe -dllname libgtk-3-0.dll --def libgtk-3-0.def --output-lib libgtk-3-0.dll.a

dlltool.exe 是 mingw 自带的工具,上面的命令执行完毕就有了动态库的输入库:libgtk-3-0.dll.a

dll.a 文件的用处参考:

https://blog.csdn.net/tangketan/article/details/6997699

以上是关于在 VS 上开如何发使用 Mingw64 的 DLL的主要内容,如果未能解决你的问题,请参考以下文章

在 VS 上开如何发使用 Mingw64 的 DLL

在 VS 上开如何发使用 Mingw64 的 DLL

MinGW vs MinGW-W64及其它

如何在 Windows 7 64 位上设置 MinGw? [关闭]

Msys2+mingw-w64 编译VS2013使用的ffmpeg静态库注意事项

mingw-w64 线程:posix vs win32