最近遇到一個很蹩腳的問題

最近遇到一個問題:
就是在程序中直接運行一個非託管的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

 

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