我有一個給定的代碼以非託管C++編寫,我將其作爲資源添加到C#程序中。將非託管EXE作爲資源合併到受管理的C#代碼中
當試圖使用Assembly.Load
加載非託管EXE時,我得到一個BadImageFormatException
,其InnerException表示「IL格式不正確」(顯然)。
我該如何做這項工作?
我知道使用代碼作爲DLL會更好,但由於某種原因,dll調用的行爲與當我使用System.Diagnostics.Process.Start
運行非託管exe的行爲方式不同。
而我不想有兩個分離的EXE文件。任何想法?
編輯: OK,我不再需要做到這一點。我的dll表現出不同的方式,因爲我在不同的環境中使用它(winform而不是控制檯);因此導致問題的函數SetThreadDesktop
無法按預期工作。現在要關閉帖子,謝謝所有回答的人。
你想使用這個非託管可執行文件?運行?您必須將嵌入式EXE保存到%TEMP%路徑,並使用Process.Start來完成。然後使用'WaitForExit',並刪除EXE清理。 – vcsjones 2012-03-05 16:51:47
確實是個好主意,但我寧願在不生成嵌入式EXE的情況下進行此項工作 – GianT971 2012-03-05 17:00:55
您應該能夠使用C++/CLI編譯器將C++編譯爲混合模式程序集,並將其與您的C#代碼成一個文件。 – 2012-03-05 17:20:27