为什么Linux编译的二进制文件在Windows上运行时无法工作? 我有一个非常简单的代码,使用C++与Gtkmm:< /P> #include <gtkmm.h> int main(int argc, char *argv[]){ Gtk::Main app(argc, argv); Gtk::Window window; Gtk::Main::run(window); return EXIT_SUCCESS; } #包括 int main(int argc,char*argv[]){ Gtk::主应用程序(argc、argv); Gtk::窗口窗口; Gtk::Main::run(窗口); 返回退出成功; }

为什么Linux编译的二进制文件在Windows上运行时无法工作? 我有一个非常简单的代码,使用C++与Gtkmm:< /P> #include <gtkmm.h> int main(int argc, char *argv[]){ Gtk::Main app(argc, argv); Gtk::Window window; Gtk::Main::run(window); return EXIT_SUCCESS; } #包括 int main(int argc,char*argv[]){ Gtk::主应用程序(argc、argv); Gtk::窗口窗口; Gtk::Main::run(窗口); 返回退出成功; },c++,windows,gtkmm,C++,Windows,Gtkmm,我在Linux上编译了它,它非常完美,我可以执行它。但问题是,当我复制过可执行文件时,我无法在Windows上运行。但我一直认为Gtkmm是便携式的 我怎样才能解决这个问题 多谢各位 Gtkmm确实是一个可移植的实现。 然而,您不能简单地将可执行文件从Linux复制并粘贴到Windows。您必须为运行程序的每个平台编译一次程序。在您的情况下,必须为Windows创建典型的.exe可执行文件 如果要交叉编译Windows可执行文件(即使用Linux计算机为Windows创建.exe文件),请查看m

我在Linux上编译了它,它非常完美,我可以执行它。但问题是,当我复制过可执行文件时,我无法在Windows上运行。但我一直认为Gtkmm是便携式的

我怎样才能解决这个问题


多谢各位

Gtkmm确实是一个可移植的实现。 然而,您不能简单地将可执行文件从Linux复制并粘贴到Windows。您必须为运行程序的每个平台编译一次程序。在您的情况下,必须为Windows创建典型的
.exe
可执行文件


如果要交叉编译Windows可执行文件(即使用Linux计算机为Windows创建
.exe
文件),请查看
mingw
编译器工具链。这可能会给您带来一些有趣的信息。

这是因为Linux和Windows上的可执行文件具有不同的结构:
在Linux上,您有ELF二进制文件,它们在Windows上不起作用。 类似地,如果您从Windows获取EXE二进制文件并尝试在Linux机器上执行它,它将无法工作


有关更多信息,请参阅和EXE。

该库可用于为不同平台构建代码,但这并不意味着您可以跨平台复制可执行文件。您仍然需要为每个平台构建程序。谢谢,但我听说用Windows编译gtkmm3一点都不容易…:/事实并非如此,这就是为什么在交叉编译时,您应该获得一个预编译的gtkmm3来进行链接。如何获得预编译的gtkmm3?:)@VickyHarris google是你的朋友:谢谢你修复我的链接!noob的错误…这是Windows EXE的正确链接:对,修复了它,谢谢!