我创建了一个使用ImageMagick C API的小应用程序,但是遇到了一些砖墙。该应用程序工作正常,我准备与我们组织中的其他几个人分享,但我找不到有关分发这样的应用程序的文档,而无需在目标计算机上安装ImageMagick。
这里是否有人提供信息或信息链接,详细说明如何将其打包以进行分发?需要哪些DLL以及在Windows中注册哪些DLL?目标用户将使用XP和Win7。
答案 0 :(得分:4)
我必须做类似的事情,虽然我自己建造了Imagemagick所以我可以削减脂肪。你可以做的是在你的机器上,使用exe they provide安装dll。在安装过程中,请确保选中“安装C和C ++开发标头和库”框。
然后,install dir将包含include目录中的标头,以及整个树中的dll。您将找到需要在lib中链接的库。虽然有很多dll,这使得这有点问题。
我在构建时最终做的只是创建一个ImageMagick dll和一个.lib文件来链接。我从源代码创建了自己的项目并构建了一个dll。然后,您可以使用源代码中的标头发送您创建的dll和lib。
编辑:我还应声明安装过程仅在您的计算机上进行。然后,您可以从安装路径复制dlls / libs / headers并将其与您的软件包一起发送,而不是要求用户安装除您的应用程序之外的任何内容。
答案 1 :(得分:4)
从来没有找到解决方案,所以这就是我发现的:
使用imageMagikNet.dll和(底层)imageMagik dll,似乎这些lib需要一些注册表项才能正常运行。
这是我运行的ImageMagikNet应用程序的包装......
来自ImageMagik安装的x11.dll 6.5.3-10
注册表项,如下所示:
[HKEY_LOCAL_MACHINE \ SOFTWARE \的ImageMagick]
[HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick的\ 6.5.3]
[HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick的\ 6.5.3 \问:16] “BinPath”= “[TARGETDIR]” “LIBPATH”= “[TARGETDIR]” “CoderModulesPath”= “[TARGETDIR]”
[HKEY_LOCAL_MACHINE \ SOFTWARE \ ImageMagick的\电流] “版本”= “6.5.3” “QuantumDepth”= DWORD:00000010 “BinPath”= “[TARGETDIR]” “LIBPATH”= “[TARGETDIR]” “CoderModulesPath”= “[TARGETDIR]”
我知道这可能不是一个干净的方式,因为我在注册表中模拟imageMagik的安装,我不知道如果客户端在他的机器上安装ImageMagik它将如何工作,但到目前为止,这是唯一的我找到的方式。
我的.net应用仅使用ImageMagik裁剪图像。
希望它有所帮助...
答案 2 :(得分:3)
我可以建议两种方法:
答案 3 :(得分:2)
除了打包所有二进制文件和模块文件夹之外,您只需设置MAGICK_CODER_MODULE_PATH
和MAGICK_FILTER_MODULE_PATH
环境变量,无需进行注册表项。
请参阅ImageMagick源代码中的module.c
,函数GetMagickModulePath
。
答案 4 :(得分:1)
从this页面上的描述看起来,列出的最后一个Windows软件包ImageMagick-6.6.2-Q16-windows.zip在没有安装程序的情况下打包,适用于需要的应用程序做自己的安装和配送。这听起来最接近你想要的。