如何从c#应用程序运行c++二进制代码

How to run c++ binary code from c# application

本文关键字:c++ 二进制 代码 运行 应用程序      更新时间:2023-10-16

我有一个来自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字节加载测试,版本= 1.0.0.0,文化=中性,PublicKeyToken = null'或其依赖项之一。试图以不正确的格式加载程序。

我猜这是与标题有关的东西?我不是专家……

是否可能以与函数MemEx相同的方式运行c++二进制文件运行c#二进制文件?

谢谢。

Assembly.Load(...)将只加载。net二进制文件。

如果你想访问。net以外的二进制API,你会想使用p/Invoke签名。

如果你想运行一个可执行文件,使用System.Diagnostics.Process.Start(...)