在 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 中填入为链接库的名称。
如何不存在,则采用下面的方式生成:
-
打开 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的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 64 位上设置 MinGw? [关闭]