我目前无法成功运行使用Meson成功构建的应用程序。要安装GTK,我按照here提供的步骤进行了安装。另外,我在我的路径中添加了路径C:\msys64\mingw64\bin
。
在该路径内,我能够成功运行应用程序gtk-demo.exe
,gtk3-demo.exe
和gtk3-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中。那也不起作用。
我很茫然-我想让这个工作!我该怎么做才能解决此问题?
答案 0 :(得分:0)
诚然,这是一个很难解决的问题,而以某种方式获得答案的问题就更难了。
几天后,我删除了剩下的小毛发,然后删除了builddir
,将mingw64
二进制路径在环境中向上移动,然后着手重建它。
事实证明,这似乎与使用ninja的clang后端有关。尽管我没有从环境变量中删除任何内容,但将后端切换到gcc
(通过向上移动mingw64/bin
文件夹)神奇地解决了该问题。
我真的很讨厌魔术-但是我对此没有进一步的解释,也没有clang
失败而gcc
可以工作的原因。如果有人可以通过改进的答案来解决问题,那就太好了。关于各种C / C ++后端,我不是编译器向导。