我已经在cygwin上使用了mkbundle来编译一个点网应用程序,它工作得很好。我用了这里的说明c# cywgwin mono mkbundle windows 7-无法编译文件
除非以下文件(从mono/bin复制)与应用程序位于同一个文件夹中,否则完成的应用程序将无法运行: mono.dll、libglib-2.0-0.dll、libglin-2.0-0.dll、zlib.dll
这一切看起来都没问题-不过,如果我运行命令(从cygwin)
$ objdump -p mycompiledapp.exe | grep "DLL Name"
(其中"mycompiledapp.exe“是应用程序的名称)
文件mono.dll、libglib-2.0-0.dll、libglin-2.0-0.dll已经嵌入到我的应用程序中。
为什么这些文件需要与我的应用程序在同一个文件夹中才能运行,而它们已经嵌入到我的应用程序中了?
我在编译时做错什么了吗?
有没有办法:
a)不要将这些程序集嵌入到我的应用程序中(这样它们就可以与应用程序一起分发)
( b)编译我的应用程序,以便它知道这些程序集嵌入到应用程序中,并使用这些程序集?(而不必将这些文件与应用程序一起分发)
这似乎只是一个痛苦的分发这些文件与我的应用程序,当他们已经嵌入其中!(特别是考虑到这些程序集的大小- 50k的点网应用程序以编译后的单应用程序的形式出现在5 megs左右,并且需要再分发4 meg的程序集才能运行.e)
谢谢你提供的信息,
史密西
发布于 2009-12-22 19:22:53
您可以在运行mkbundle时添加--静态标志。请注意,这将嵌入Mono库(mono.dll),即LGPL。至于libglib和libg线程,您应该找到它们的静态版本,并在链接时使用它们。请注意,在您的程序中嵌入LGPL库将使具有其他含意。
https://stackoverflow.com/questions/1948113
复制相似问题