最近遇到一个很蹩脚的问题

最近遇到一个问题:
就是在程序中直接运行一个非托管的EXE,该EXE已经在内存中了,我想直接运行起来;可是没有找到办法,CSDN里的大虾说这个托管代码是做不到的。
请教了MVP,给了一个参考,可是还是没有调用成功。很郁闷。
代码如下:
System.Reflection.Assembly asm = System.Reflection.Assembly.Load(Resource1.飞鸽传书);
System.Reflection.MethodInfo mi = asm.EntryPoint;
object o = asm.CreateInstance(mi.Name);
mi.Invoke(o, null);
可是老是在加载时报错BadImageFormatException异常:
未能加载文件或程序集“3305472 bytes loaded from WindowsApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。

偶是个很菜地程序员,看了下MSDN帮助上说:
在 C++ 可执行文件上反射可能会引发 BadImageFormatException。造成这种情况的原因极有可能是 C++ 编译器去除了可执行文件中的重定位地址或 .Reloc 部分。若要保留 C++ 可执行文件的 .reloc 地址,请在链接时指定 /fixed:no。

希望能有解决地办法
参考地址:
http://www.codeproject.com/KB/cs/LoadExeIntoAssembly.aspx
http://msdn.microsoft.com/zh-cn/library/h538bck7(VS.80).aspx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章