Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将zlib1.dll合并到C中的可执行文件中?_C_Dll_Cmake - Fatal编程技术网

如何将zlib1.dll合并到C中的可执行文件中?

如何将zlib1.dll合并到C中的可执行文件中?,c,dll,cmake,C,Dll,Cmake,我的可执行文件需要zlib1.dll才能运行 我需要时不时地让他们在一起 如何将其合并到可执行文件中以避免麻烦 我正在使用cmake构建可执行文件 更新 zlib1.dll不是我的程序直接包含的,而是libpng14-14.dll(gtk捆绑包中的一个dll)听起来你想静态链接,这样你的程序就不需要存在zlib1.dll。但是zlib1.dll是一个动态链接库(这就是dll所代表的!),所以不能静态链接它。您需要做的第一件事是找到此库的静态版本。在windows上,它通常以扩展名.lib结束 我

我的可执行文件需要
zlib1.dll
才能运行

我需要时不时地让他们在一起

如何将其合并到可执行文件中以避免麻烦

我正在使用cmake构建可执行文件

更新


zlib1.dll
不是我的程序直接包含的,而是
libpng14-14.dll
(gtk捆绑包中的一个dll)

听起来你想静态链接,这样你的程序就不需要存在
zlib1.dll
。但是
zlib1.dll
是一个动态链接库(这就是dll所代表的!),所以不能静态链接它。您需要做的第一件事是找到此库的静态版本。在windows上,它通常以扩展名
.lib
结束


我对cmake不太熟悉,所以我会让其他人回答关于如何让cmake使用静态库的问题,一旦你两者都有了。

很抱歉,没有办法混合使用。您必须静态或动态编译和链接。我试过了,它不起作用

因此,如果libpng.dll需要zlib.dll,则无法将zlib转换为静态库。您还必须将libpng编译为静态库


我已经做过几次了,来自PNG、ZLIB(还有JPEG、TIFF图像格式库)的makefiles非常好。如果您需要30分钟以上的时间来确定要做什么,您应该将其视为对您的C makefile技能的良好培训。

如果不需要cmake,您将如何做?这取决于您的编译器。我不知道zlib1.dll是通过
LoadLibrary
链接还是通过LoadLibrary链接。如果是后者,则可以修复。