在其他计算机上运行.exe文件所需的.dll文件(c、gtk3)

在其他计算机上运行.exe文件所需的.dll文件(c、gtk3),c,dll,gtk3,C,Dll,Gtk3,我有一个应用程序,是用c编写的,用gcc(mingw)编译的,在64位windows 7上。它使用gtk3库 我打算让它成为一个独立的文件、可移植的应用程序,不需要预先安装或安装任何东西 如果我尝试在其他机器上运行它,它将无法启动“some-gtk-library.dll丢失” 我怀疑将所有缺少的.dll文件放在同一个文件夹中会使程序运行,但我想知道如何将所有需要的文件集成到.exe文件中 编辑1 如果我尝试在gcc的链接阶段添加选项-static,我会得到一个错误 C:/msys64/ming

我有一个应用程序,是用c编写的,用gcc(mingw)编译的,在64位windows 7上。它使用gtk3库

我打算让它成为一个独立的文件、可移植的应用程序,不需要预先安装或安装任何东西

如果我尝试在其他机器上运行它,它将无法启动“some-gtk-library.dll丢失”

我怀疑将所有缺少的.dll文件放在同一个文件夹中会使程序运行,但我想知道如何将所有需要的文件集成到.exe文件中

编辑1

如果我尝试在gcc的链接阶段添加选项
-static
,我会得到一个错误

C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgtk-3
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgdk-3
C:/msys64/mingw64/lib\libgobject-2.0.a(libgobject_2_0_la-gtype.o):(.text+0x99b0): multiple definition of `DllMain'
C:/msys64/mingw64/lib\libgdk_pixbuf-2.0.a(gdk-pixbuf-io.o):(.text+0x1f10): first defined here
collect2.exe: error: ld returned 1 exit status

当然可以,如果静态链接它们。然后它们将嵌入到您的可执行文件中,因此您无需发布它们。当然,也有缺点:较大的可执行文件大小和可能的许可问题(GPL)。您应该咨询GTK文档以了解如何执行此操作。例如,如果我想导入“libcairo-2.dll”,我应该怎么做?为什么不看看这个问题:我找到了一个静态gtk3,但它是针对win32的,而且是旧版本,因此它不会编译或链接。。。我已经看到了这个问题,但仍然找不到任何gtk3 win64静态库,我将非常感谢您的帮助