微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 C++ 给 C# 的函数提供参数?

如何解决如何从 C++ 给 C# 的函数提供参数?

调用方:C++代码
调用方:C#代码

C# 代码

public int CSharpMethodName(string str,params object[] args)
{
   ....
}

C++ 代码

bool CPPMethodName(const CString& cstr,CString parameters[])
{
      //The object is already initialized with gcroot in order to access to C# code. 

     //Here I want to give parameters to the CSharpMethodName
     result = obj->CSharpMethodName(gcnew System::String(sqlQuery),parameters);
}

这是添加到 C++ 项目作为参考时 C# 方法的签名: CSharpMethodName(System::String^,... array<System::Object^>^)

如何将参数的 CString 数组类型赋予 CSharp 方法?如果有任何不清楚的地方,请告诉我。

谢谢

解决方法

我发现我必须将非托管数组转换为托管数组。

这是对我有用的完整代码:

bool CPPMethodName(const CString& cstr,const CString parameters[],size_t size)
{
      cli::array<System::String^>^ managedParametersArray = GetManagedArray(parameters,size);
      result = obj->CSharpMethodName(gcnew System::String(sqlQuery),managedParametersArray );

      return result;
}

cli::array<System::String^>^ AdoHelperWrapper::GetManagedArray(const CString paramaters[],size_t size)
{
    cli::array<System::String^>^ result = gcnew cli::array<System::String^>(size);

    for (size_t i = 0; i < size; i++)
    {
        result[i] = gcnew System::String(paramaters[i]);
    }
    return result;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。