我有一个simple window应用程序,使用MSYS2构建,我希望能够在MSYS2 MinGW shell之外运行,只需双击该应用程序即可。
问题是,当我想运行应用程序时,它必须是MSYS MinGW
提示符,否则会返回错误。
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:
该特定错误代码指的是无效的图像格式。但是,错误代码通常意味着您尝试运行的程序旨在与64位Windows操作系统一起使用,但您只有32位操作系统。
然而,由于我正在运行x64计算机,因此无效。 DLL是x64以及exe。
www.gtk.org说GTK +依赖于某些库,除了我上面所做的以外,我想不出任何解决方案,也无法找到任何关于要包含哪些依赖项的文档,以便不通过MSYS提示运行它。 / p>
那么我需要做些什么来让我的窗户工作?应用程序很好,依赖项存在问题。
对于我给出的脚本,我需要包含哪些依赖项(或者我列出了所有这些依赖项,在这种情况下我的窗口出了什么问题)?
最后是否有一种比我想要做的更简单的方法来获得所有必要的依赖?
答案 0 :(得分:3)
系统需要能够找到共享库。在Linux系统上,这是通过链接器,通常是ld
。查找位置的配置位于/etc/ld.so.conf
和/etc/ld.so.conf.d
。
现在在Windows上,这并不存在。这就是环境变量PATH
通常用于此的原因,有时也会被安装程序修改。但是为每个程序更改PATH
都很烦人,禁止重新定位(移动整个app目录并从其他地方运行应用程序)。所以你可以创建一个空目录,在其中创建一个bin
目录,然后在那里复制你的应用程序二进制文件和GTK +库。这应该有效,因为Windows上的the current directory is searched before the PATH
variable。
所以你所做的是正确的。您遇到的问题类似于应用重新分配,即。收集必要的位以在另一台计算机上分发软件。遗憾的是,这不是GTK +网站上记录最多的部分。您是否尝试使用不使用GtkApplication
类的应用程序?
答案 1 :(得分:0)
我通过像这样的命令行包含库来修复它。
gcc pkg-config --cflags gtk+-3.0
-o example-1 example-1.c pkg-config --libs gtk+-3.0