如何在c ++ / CLI中使用out参数调用c#函数

时间:2013-01-29 10:08:52

标签: c# c++-cli activex

我对C ++很新。

我有一个C#dll,我想在c ++项目中调用它。

C#中的函数我会这样声明:

   public int ShowStringReturn(out string str)
    {
        str = "Message from c#";
        return 0; 
    } 

然后,我在我的C ++项目中调用它:

__declspec(dllexport) 
    int ShowStringCSharpReturn (std::string &strOut)
    {
        try
        {  
            String^ str; 
            IngWrapper::Ingressus_Instance->xIMUobject->ShowStringReturn(str);  

            using System::Runtime::InteropServices::Marshal; 
            const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(str)).ToPointer( );
            strOut = chars; 

            return 0; 
        }
        catch (Exception^ ex)
        {
            MessageBox::Show(ex->Message,"Error",MessageBoxButtons::OK,MessageBoxIcon::Error);
            return -1;
        }
    }

我可以编译它,但是当我在Windows窗体应用程序中调用activex dll时,我收到错误“外部组件抛出了异常” 我应该如何宣布和调用我的函数?

0 个答案:

没有答案