如何在 Windows 上分发 Gtkmm 应用程序?

Posted

技术标签:

【中文标题】如何在 Windows 上分发 Gtkmm 应用程序?【英文标题】:How do I distribute a Gtkmm application on Windows? 【发布时间】:2020-07-13 17:43:22 【问题描述】:

我使用 gtkmm(GTK+ 的 C++ 语言包装器)编写了一个 GUI。我已经能够找到.exe 的.dll。文件依赖,并使用 NSIS 制作基本安装程序。但是,我无法将应用程序分发到其他 Windows 设备。由于我对此完全陌生,有人对如何正确分发应用程序有建议吗?我真正需要做的就是在其他几台电脑上下载它。谢谢!

【问题讨论】:

您需要分发您的编译器运行时库,以及您正在使用的任何其他库,以及您的程序。 您在另一台机器上执行了安装程序并且它可以工作?是应用程序失败了? @Manuel 如果我不包含 .dll,应用程序将失败,并为找不到的任何文件显示“缺少 ____.dll”。但是当我将所有 .dll 文件包含在与 .exe 文件相同的目录中时,应用程序将失败并出现与 Gdk 相关的错误 @LiamWard 你能显示错误吗? @Manuel 感谢您的帮助,当所有 .dll 文件都包含在与 .exe 相同的目录中时,我得到的 Gdk 错误是“在抛出 Gdk::PixbufError 实例后调用终止” .但是,该错误并没有出现在我开发应用程序的原始机器上,并且我检查了我加载的所有图像都与 .exe 位于同一目录中。 【参考方案1】:

尝试捕获异常并查看Gdk::PixbufError::code()Gdk::PixbufError::what() 以了解它抛出的原因。

你有几个代码:

  CORRUPT_IMAGE,
  INSUFFICIENT_MEMORY,
  BAD_OPTION,
  UNKNOWN_TYPE,
  UNSUPPORTED_OPERATION,
  FAILED,
  INCOMPLETE_ANIMATION

开发机中的图片与构建.exe在同一目录下?

此外,如果您通过图标、快捷方式或类似方式运行应用,则当前目录可能与.exe 不同。

【讨论】:

以上是关于如何在 Windows 上分发 Gtkmm 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 上分发 GTK+ 应用程序?

gtkmm 包括不工作的 Windows 7

将 gtkmm2 应用程序部署到 Windows - 字体未从 mingw 终端呈现

Ubuntu 14.04TLA 上的代码块和 Gtkmm

windows (MSYS2) 上编译的 gtkmm 程序缺少库

如何在 Windows 7+ 和 MSYS2 上的 GTK3 上获取本机 Windows 装饰