我有一个非常简单的代码,使用C ++和Gtkmm:
#include <gtkmm.h>
int main(int argc, char *argv[]){
Gtk::Main app(argc, argv);
Gtk::Window window;
Gtk::Main::run(window);
return EXIT_SUCCESS;
}
我在Linux上编译它,它是完美的我可以执行它。但问题是当我复制过去我无法实现的可执行文件以使其在Windows上可行时。但我一直认为Gtkmm是便携式的?!
我该如何解决这个问题?
非常感谢!
答案 0 :(得分:1)
Gtkmm确实是一种便携式实现。
然而,您不能简单地将可执行文件从Linux复制并粘贴到Windows。您必须为正在运行它的每个平台编译一次程序。在您的情况下,您必须为Windows创建典型的.exe
可执行文件。
如果要交叉编译Windows的可执行文件(即使用Linux机器为Windows创建.exe
文件),请查看mingw
编译器工具链。此blog也可能包含一些有趣的信息。
答案 1 :(得分:1)
这是因为 Linux 和 Windows 上的可执行文件具有不同的结构:
在 Linux 上,您有 ELF 二进制文件,它们在 Windows 上不起作用。
同样,如果您从 Windows 获取一个 EXE 二进制文件并尝试在 Linux 机器上执行它,它也不会工作。
有关详细信息,请参阅 ELF 和 EXE。