我目前正在尝试建立一个环境,在这个环境中,我可以使用Visual Studio 2013创建winform应用程序,然后我想将它放在带有附加触摸屏的ARM v7 BeagleBone Black上,它们应该与Mono一起运行.
为了做到这一点,我采用了Ubuntu 14.10 AMD64系统,并使用BeagleBone Black的工具链和scratchbox2创建了一个交叉编译环境.
我通过使用它编译一些原生测试程序来验证工具链sb2是否正常工作,它们在Ubuntu机器(使用sb2)以及BeagleBone Black上运行完美.
接下来,我从源代码编译单声道,一次用于Ubuntu机器,一次用于BeagleBone Black.为此,我主要关注这篇文章.最后,我有一个完整单声道树的目录,其原始组件已经为ARM正确编译.我通过在将单声道目录复制到其上后运行sb2 mono -V
Ubuntu系统以及mono -V
BeagleBone Black来验证.我还可以在BBB的mono上运行我用VS2013创建的简单.NET控制台应用程序.
接下来,我尝试运行一个简单的GUI应用程序,它基本上只包含一个表单和一个弹出消息框的按钮.VS中的项目设置设置为.NET Framework 4.5版和"发布".
接下来,我尝试在Ubuntu系统上使用mono运行这个EXE,它在调整./configure选项,重新编译mono(--with-tls = __ thread)并安装所需的库(libgdiplus和libx11)后工作.但是当我尝试在BBB上运行相同的EXE时,它会因此异常而崩溃:
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..ctor (Int32 width, Int32 height, PixelFormat format) [0x00000] in <filename unknown>:0
at System.Drawing.Bitmap..ctor (System.Drawing.Image original, Int32 width, Int32 height) [0x00000] in <filename unknown>:0
at System.Drawing.Bitmap..ctor (System.Drawing.Image …
Run Code Online (Sandbox Code Playgroud) 在本提到的线程,以及在这里我使用mkbundle -o newfile oldfile.exe --static
(OS:Ubuntu的11.10 64位,单声道:2.10.5)来创建其应在Apache Web服务器的可执行文件(OS:的Debian GNU/Linux的32位).这里oldfile.exe
是使用C#-Hello-World-Code编译的结果mcs oldfile.cs
.在原始系统(使用Ubuntu)上,该文件是可执行的.但是,当我newfile
在Apache Web服务器上调用时,我收到错误:
不能执行二进制文件
此外,在做的file newfile
时候说
ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接(使用共享库),不剥离
我怀疑如果mkbundle按照预期工作,那么它应该已经读过了
......静态联系......
不应该吗?任何人都知道为什么文件在服务器上不可执行?这是因为32位/ 64位的问题吗?
我正在尝试按照以下帖子使用cygwin构建带嵌入式单声道的ac#app.
我在这里遵循指南:如何使用Mono和mkbundle将简单的.Net控制台项目转换为便携式exe?
我收到的错误是:
"gcc:-mno-cygwin标志已被删除;使用一个以mingw为目标的交叉编译器."
我不确定如何解决这个问题 - 任何人都可以提出建议吗?
我正在使用:Windows 7 x64,Mono 2.4.3,cygwin 7.1 beta(支持Windows 7).
谢谢,
坦率