运行 只需双击 MSYS2 即可构建的 GTK+ 应用程序
Running a GTK+ application built with MSYS2 by just double clicking it
我有一个 simple window application, built with MSYS2,我希望能够 运行 在 MSYS2 MinGW shell 之外,只需双击该应用程序即可。
问题是,当我想 运行 应用程序时,它必须通过 MSYS MinGW
提示,否则会 returns 出错。
The code execution cannot proceed because libgio-2.0-0.dll was not found. Reinstalling the program may fix this problem
我试过包括(通过将文件复制到我的 exe 的位置)
libgio-2.0-0.dll
并且出现了更多错误,指出缺少库。我也包含了这些文件。我已经显示了我在下面包含的文件:
libffi-6.dll
libgdk-3-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgtk-3-0.dll
libgobject-2.0-0.dll
libgio-2.0-0.dll
libatk-1.0-0.dll
libcairo-gobject-2.dll
libcairo-2.dll
libepoxy-0.dll
libpcre-1.dll
libwinpthread-1.dll
libgdk_pixbuf-2.0-0.dll
libpango-1.0-0.dll
最后出现错误说:
The application was unable to start correctly (0xc000007b). Click OK to close the application.
I found what the error message means:
That particular error code refers to an invalid image format. However, what the error code usually means is that you are trying to run a program that is intended to work with a 64 bit Windows operating system, but that you only have a 32 bit OS.
但是这对我没有帮助,因为我 运行正在使用 x64 计算机。 DLL 是 x64 以及 exe。
www.gtk.org 说 GTK+ 依赖于一些库,除了我上面所做的之外,我想不出任何解决方案,也找不到任何关于要包含哪些依赖项的文档,以便不 运行 它通过 MSYS 提示。
那么我需要做什么才能使 window 正常工作?应用程序很好但依赖项有问题。
其次,我需要为我提供的脚本包含哪些依赖项(或者我是否列出了所有依赖项,在这种情况下,我的 window 出了什么问题)?
最后,有没有比我尝试做的更简单的方法来获取所有必要的依赖项?
系统需要能够找到共享库。在 Linux 系统上,这是通过链接器实现的,通常是 ld
。在哪里找到它们的配置位于 /etc/ld.so.conf
和 /etc/ld.so.conf.d
.
现在 Windows,这不存在。这就是为什么环境变量 PATH
通常用于此目的,有时由安装程序修改。但是为每个程序更改 PATH
很烦人并且禁止重定位(移动整个应用程序目录和 运行 来自其他地方的应用程序)。因此,您可以只创建一个空目录,在其中创建一个 bin
目录,然后将您的应用程序二进制文件和 GTK+ 库复制到那里。这应该有效,因为 Windows.
上的 the current directory is searched before the PATH
variable
所以你所做的是正确的。您遇到的问题类似于应用程序重新分发,即。收集必要的位以在另一台计算机上分发软件。不幸的是,这不是 GTK+ 网站上记录最多的部分。您是否尝试过不使用 GtkApplication
class 的应用程序?
我像这样通过命令行包含库来修复它。
gcc pkg-config --cflags gtk+-3.0
-o example-1 example-1.c pkg-config --libs gtk+-3.0
和运行它使用MSYS2 installer
附带的mingw64.exe
我有一个 simple window application, built with MSYS2,我希望能够 运行 在 MSYS2 MinGW shell 之外,只需双击该应用程序即可。
问题是,当我想 运行 应用程序时,它必须通过 MSYS MinGW
提示,否则会 returns 出错。
The code execution cannot proceed because libgio-2.0-0.dll was not found. Reinstalling the program may fix this problem
我试过包括(通过将文件复制到我的 exe 的位置)
libgio-2.0-0.dll
并且出现了更多错误,指出缺少库。我也包含了这些文件。我已经显示了我在下面包含的文件:
libffi-6.dll
libgdk-3-0.dll
libglib-2.0-0.dll
libgmodule-2.0-0.dll
libgtk-3-0.dll
libgobject-2.0-0.dll
libgio-2.0-0.dll
libatk-1.0-0.dll
libcairo-gobject-2.dll
libcairo-2.dll
libepoxy-0.dll
libpcre-1.dll
libwinpthread-1.dll
libgdk_pixbuf-2.0-0.dll
libpango-1.0-0.dll
最后出现错误说:
The application was unable to start correctly (0xc000007b). Click OK to close the application.
I found what the error message means:
That particular error code refers to an invalid image format. However, what the error code usually means is that you are trying to run a program that is intended to work with a 64 bit Windows operating system, but that you only have a 32 bit OS.
但是这对我没有帮助,因为我 运行正在使用 x64 计算机。 DLL 是 x64 以及 exe。
www.gtk.org 说 GTK+ 依赖于一些库,除了我上面所做的之外,我想不出任何解决方案,也找不到任何关于要包含哪些依赖项的文档,以便不 运行 它通过 MSYS 提示。
那么我需要做什么才能使 window 正常工作?应用程序很好但依赖项有问题。
其次,我需要为我提供的脚本包含哪些依赖项(或者我是否列出了所有依赖项,在这种情况下,我的 window 出了什么问题)?
最后,有没有比我尝试做的更简单的方法来获取所有必要的依赖项?
系统需要能够找到共享库。在 Linux 系统上,这是通过链接器实现的,通常是 ld
。在哪里找到它们的配置位于 /etc/ld.so.conf
和 /etc/ld.so.conf.d
.
现在 Windows,这不存在。这就是为什么环境变量 PATH
通常用于此目的,有时由安装程序修改。但是为每个程序更改 PATH
很烦人并且禁止重定位(移动整个应用程序目录和 运行 来自其他地方的应用程序)。因此,您可以只创建一个空目录,在其中创建一个 bin
目录,然后将您的应用程序二进制文件和 GTK+ 库复制到那里。这应该有效,因为 Windows.
PATH
variable
所以你所做的是正确的。您遇到的问题类似于应用程序重新分发,即。收集必要的位以在另一台计算机上分发软件。不幸的是,这不是 GTK+ 网站上记录最多的部分。您是否尝试过不使用 GtkApplication
class 的应用程序?
我像这样通过命令行包含库来修复它。
gcc pkg-config --cflags gtk+-3.0
-o example-1 example-1.c pkg-config --libs gtk+-3.0
和运行它使用MSYS2 installer
附带的mingw64.exe