如何从c#application

时间:2016-10-08 17:47:57

标签: c# c++ binary

我有一个来自c ++应用程序的二进制数据。我想直接从我的C#应用​​程序运行该特定的二进制代码。

我有这个从互联网上获得的功能:

    static void MemExe(byte[] buffer)
    {
        Assembly asm = Assembly.Load(buffer);

        if (asm.EntryPoint == null)
            throw new ApplicationException("No entry point found!");

        MethodInfo ePoint = asm.EntryPoint;
        object ins = asm.CreateInstance(ePoint.Name);
        ePoint.Invoke(ins, null);
    }

它适用于C#二进制代码,但如果我尝试打开C ++二进制代码,它就会崩溃。

这里的例外:

  

其他信息:无法加载文件或程序集'5154816字节已加载Test,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。试图以不正确的格式加载程序。

我猜这是与标题相关的内容?我不是专家......

是否可以像 MemEx 一样运行c ++二进制文件 运行C#binary?

感谢。

1 个答案:

答案 0 :(得分:0)

Assembly.Load(...)只会加载.NET二进制文件。

如果您想要访问除.NET之外的二进制API,您可能希望使用P / Invoke签名。

如果要运行可执行文件,请使用System.Diagnostics.Process.Start(...)