c# - ICLRRuntimeHost::ExecuteInDefaultAppDomain 无法执行应用程序

标签 c# c++ clr

我已使用此代码运行预编译的 C# 应用程序:

ICLRMetaHost *p_meta_host = nullptr;
ICLRRuntimeInfo *p_runtime_info = nullptr;
ICLRRuntimeHost *p_clr_runtime_host = nullptr;
CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&p_meta_host));
p_meta_host->GetRuntime(L"v4.0.30319", IID_PPV_ARGS(&p_runtime_info));
p_runtime_info->GetInterface(CLSID_CLRRuntimeHost,
    IID_PPV_ARGS(&p_clr_runtime_host));
p_clr_runtime_host->Start();
auto hr = p_clr_runtime_host->ExecuteInDefaultAppDomain(
    L"C:\\somefolder\\test.exe",
    L"InjectExample.Program",
    L"EntryPoint",
    L"hey!",
    &p_return_value);

执行后hr不是S_OK并且GetLastError()返回ERROR_FILE_NOT_FOUND
关键是文件肯定存在于 'C:\\somefolder\\test.exe'
知道为什么会这样吗?

--UPD。在调试日志中发现:

'NetLoader.exe' (Win32): Loaded 'C:\somefolder\test.exe'. 
'NetLoader.exe' (Win32): Loaded 'C:\somefolder\test.exe'. 
'NetLoader.exe' (Win32): Unloaded 'C:\somefolder\test.exe'

最佳答案

问题已解决。
显然 hr 等于 COR_E_MISSINGMETHOD0x80131513
这意味着我尝试使用错误的方法。

有关返回码的更多信息,请参见此处: https://referencesource.microsoft.com/#mscorlib/system/__hresults.cs,c4f0369b78643cb0

关于c# - ICLRRuntimeHost::ExecuteInDefaultAppDomain 无法执行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620525/

相关文章:

c++ - 使用指针设置变量

c++ - 将迭代器返回到多映射中最接近指定时间的时间

c# - 去除unbox_any的抖动逻辑

c# - String 和 Char 类型如何存储在 .NET 的内存中?

c++ - 显示自定义图像并能够捕获鼠标输入

c# - 关于 .aspx 页面上未在服务器上运行的输入变量和隐藏代码

c# - 我是否需要在 dispose() 命令之前检查对象是否为空?

c# - 如何使小数变量保留/显示小数位,即使小数位仅为零?

c# - 在 64 位机器上基于 AnyCPU 与 x64 平台构建的 C# 应用程序的性能

c# - 使用 C# 检测和操作 XPS 文档中使用的字体