使用Meson在Windows上构建和运行GTK应用程序

时间:2019-03-13 17:01:44

标签: c windows windows-10 gtk gtk3

我目前无法成功运行使用Meson成功构建的应用程序。要安装GTK,我按照here提供的步骤进行了安装。另外,我在我的路径中添加了路径C:\msys64\mingw64\bin

在该路径内,我能够成功运行应用程序gtk-demo.exegtk3-demo.exegtk3-demo-application.exe,这对我来说表明已成功安装。

我着手构建本教程中为Meson提供的示例应用程序:

#include<gtk/gtk.h>

int main(int argc, char **argv) {
  GtkWidget *win;
  gtk_init(&argc, &argv);
  win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(win), "Hello there");
  g_signal_connect(win, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  gtk_widget_show(win);
  gtk_main();
}

ninja中运行builddir,得到以下输出:

[1/1] Linking target test.exe.
LINK : warning LNK4044: unrecognized option '/-no-undefined'; ignored
LINK : warning LNK4044: unrecognized option '/-as-needed'; ignored
LINK : warning LNK4044: unrecognized option '/-start-group'; ignored
LINK : warning LNK4044: unrecognized option '/luuid'; ignored
LINK : warning LNK4044: unrecognized option '/-end-group'; ignored

但是,在运行它时,我遇到以下错误:

  

过程入口点g_application_get_type不在动态链接库C:\ Users \ me \ proj \ builddir \ test.exe中。

发现这是由绊入DLL地狱引起的问题,我检查了路径(精细),然后将可在bin目录中找到的所有gtk dll复制到了本地builddir中。那也不起作用。

我很茫然-我想让这个工作!我该怎么做才能解决此问题?

1 个答案:

答案 0 :(得分:0)

诚然,这是一个很难解决的问题,而以某种方式获得答案的问题就更难了。

几天后,我删除了剩下的小毛发,然后删除了builddir,将mingw64二进制路径在环境中向上移动,然后着手重建它。

事实证明,这似乎与使用ninja的clang后端有关。尽管我没有从环境变量中删除任何内容,但将后端切换到gcc(通过向上移动mingw64/bin文件夹)神奇地解​​决了该问题。

我真的很讨厌魔术-但是我对此没有进一步的解释,也没有clang失败而gcc可以工作的原因。如果有人可以通过改进的答案来解决问题,那就太好了。关于各种C / C ++后端,我不是编译器向导。