使用ExecuteInDefaultAppDomain来调用主函数C#console应用程序

时间:2015-08-07 09:51:40

标签: c# c++ clr

尝试从非托管本机c ++代码加载CLR,然后使用ExecuteInDefaultAppDomain函数调用win32 c#console应用程序中定义的函数。 实际上我试图调用静态void Main(string [] args)即入口点函数。但是在调用ExecuteInDefaultAppDomain时,如下面的代码所示它返回0x80131513(COR_E_MISSINGMETHOD)。请帮我解决问题,我的概念是错了,请指导我一样。

请找到下面粘贴的c ++代码:

hdfs dfs -du -s /dir

1 个答案:

答案 0 :(得分:1)

ExecuteInDefaultAppDomain只能调用具有签名的函数:

static int pwzMethodName (String pwzArgument)

由于程序的Main()签名不同,因此调用无法找到您的函数。您可以通过从另一个函数包装对Main函数的调用来解决此问题:

static int HostingMain(String args)
{
    Main(new string[] { args });
    return 0;
}

然后将您对C代码的调用修改为:

        hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(L"D:\\IPTCom\\IPTComServiceTest_Canada\\IPTComServiceTests_rev2\\Unmanaged_App\\ConsoleApplication.exe", L"ConsoleApplication.Program", L"HostingMain",L"", &dwRet);