首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#程序不能在单声道下工作。

C#程序不能在单声道下工作。
EN

Stack Overflow用户
提问于 2011-12-31 11:10:15
回答 1查看 2.4K关注 0票数 0

我正在尝试让我用Visual Linux2010编写的程序在C#上运行。为此,我使用了mkbundle功能,这样潜在的客户就不必安装mono了。不幸的是,我并不了解Linux或者Mono,所以我只关注了这个:c# cywgwin mono mkbundle windows 7 - cannot compile file

但由于某种原因,mkbundle写入最终会失败,并指出“没有这样的文件或目录”。我已经在下面粘贴了全文。有人知道怎么解决这个问题吗?

代码语言:javascript
运行
复制
$ mkbundle -o MyProgram MyProgram.exe --deps
OS is: Windows
Sources: 1 Auto-dependencies: True
   embedding: C:\cygwin\home\Synaps\MyProgram.exe
   embedding: C:\Mono-2.10.8\lib\mono\4.0\mscorlib.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Drawing.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\Mono.Security.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Configuration.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Xml.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Security.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Windows.Forms.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\Accessibility.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\Mono.WebBrowser.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\Mono.Posix.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Data.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\Mono.Data.Tds.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.Transactions.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\System.EnterpriseServices.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\AForge.Imaging.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\AForge.dll
   embedding: C:\Mono-2.10.8\lib\mono\4.0\AForge.Math.dll
Compiling:
as -o temp.o temp.s
gcc -mno-cygwin -g -o MyProgram -Wall temp.c `pkg-config --cflags --libs mono-2|d
os2unix`  temp.o
: No such file or directory
temp.c: In function `main':
temp.c:143: warning: implicit declaration of function `g_utf16_to_utf8'
temp.c:143: warning: assignment makes pointer from integer without a cast
temp.c:158: warning: assignment makes pointer from integer without a cast
[Fail]

当我尝试在Linux虚拟机上使用mkbundle时,我成功地获得了Linux可执行文件,但每当我在Ubuntu Linux VM (由Oracle VM virtual Box)下运行该程序时,都会得到以下错误:

代码语言:javascript
运行
复制
Unhandled Exception: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0 
  at System.Drawing.Bitmap.SetResolution (Single xDpi, Single yDpi) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:SetResolution (single,single)
  at AForge.Imaging.ColorReduction.ColorImageQuantizer.ReduceColors (System.Drawing.Bitmap image, Int32 paletteSize) [0x00000] in <filename unknown>:0 
  at FootMeasure.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.ArgumentException: A null reference or invalid value was found [GDI+ status: InvalidParameter]
  at System.Drawing.GDIPlus.CheckStatus (Status status) [0x00000] in <filename unknown>:0 
  at System.Drawing.Bitmap.SetResolution (Single xDpi, Single yDpi) [0x00000] in <filename unknown>:0 
  at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:SetResolution (single,single)
  at AForge.Imaging.ColorReduction.ColorImageQuantizer.ReduceColors (System.Drawing.Bitmap image, Int32 paletteSize) [0x00000] in <filename unknown>:0 
  at FootMeasure.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-03 14:27:51

正如我在一条评论中所说的,如果你想生成一个自给自足的Linux可执行二进制文件,你不应该在Windows上使用mkbundle。你应该在Linux 上运行来获得一个Linux可执行文件(而且你可能应该关心32位的Linux-X86和64位的Linux-x86-64,它们是不同的)。

我建议您在Linux机器中编译和运行您的应用程序(如果您愿意,甚至可以在VM中安装Linux系统)。所以最简单的方法是在你的机器上安装一个Linux发行版(例如Debian)。

我认为你不会轻易找到能够在Windows机器上编译面向Linux的Mono程序的交叉编译器。

而你正在做的(在Windows上运行mkbundle )是产生一个Windows可执行文件(对于Cygwin),它不能给你一个Linux二进制可执行文件,无论你尝试什么选项。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8686049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档