如何从c#应用程序运行c++二进制代码
本文关键字:c++ 二进制 代码 运行 应用程序 | 更新日期: 2023-09-27 18:12:14
我有一个来自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(...)