2017-10-20 139 views
0

我有一个simple window应用程序,使用MSYS2构建,我希望能够在MSYS2 MinGW外壳之外运行,只需双击应用程序即可。只需双击运行一个使用MSYS2构建的GTK +应用程序

的问题是,当我要运行该应用程序必须是虽然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多的错误出现说库失踪。我也包括这些文件。我已经I所示包括在文件:

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提示符运行它。

那么,我需要做什么才能让我的窗口工作?应用程序很好,依赖关系存在问题。

其次是什么,我需要包括的依赖(或者我列出了所有的人在什么是我的窗口去这种情况下是错误的),因为我给了剧本?

最后有没有比我试图做的就是所有必要的依赖更简单的方法?

回答

2

系统需要能够找到共享库。在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类的应用程序?

+0

作为一个实验,我用我的应用程序复制了'bin'文件夹的全部内容。双击它并打开窗口。控制台屏幕上出现错误消息,但窗口确实打开。然后我删除了所有的exe文件,它仍然有效。然后除了我上面提到的那些之外的所有dll。它返回了同样的错误。这导致我相信一个DLL不见了。还有一个错误,说'找不到图标'window-minimize-symbolic-ltr'。 hicolor主题“任何想法如何解决这个问题? – Simon

+0

好的,是啊任何想法,哪些DLL丢失? – Simon

+0

使用'pacman'包管理器来列出包含在GTK +包中的文件。 – liberforce

相关问题