Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+中的马歇尔阵列+;C#struct中的struct 我有一个C++结构,它包含int和STD::string数组,它是本地C++代码(DLL)。我使用以下方法在C#中获取它:_C#_Visual C++_Marshalling - Fatal编程技术网

C+中的马歇尔阵列+;C#struct中的struct 我有一个C++结构,它包含int和STD::string数组,它是本地C++代码(DLL)。我使用以下方法在C#中获取它:

C+中的马歇尔阵列+;C#struct中的struct 我有一个C++结构,它包含int和STD::string数组,它是本地C++代码(DLL)。我使用以下方法在C#中获取它:,c#,visual-c++,marshalling,C#,Visual C++,Marshalling,代码编译得很好。 当调用这个静态方法并从C++获得Strut的返回值并在C类中分配给另一个结构对象时,类似于 我得到MarshalDirectiveException的异常未处理。方法的类型签名与PInvoke不兼容。我试图通过其他论坛线程解决这个问题,但没有得到结果 > C++代码中的结构与C<结构类似 struct pinvoke_call { int mynum[5] }; 调用函数C++后,它将结构变量从那里返回到C,我想封送< /P> 谢谢你的回复, Ashutosh在CL

代码编译得很好。 当调用这个静态方法并从C++获得Strut的返回值并在C类中分配给另一个结构对象时,类似于

我得到MarshalDirectiveException的异常未处理。方法的类型签名与PInvoke不兼容。我试图通过其他论坛线程解决这个问题,但没有得到结果


<> > C++代码中的结构与C<结构类似

struct pinvoke_call
{
    int mynum[5]
};

调用函数C++后,它将结构变量从那里返回到C,我想封送< /P> 谢谢你的回复,


Ashutosh

在CLR中有一些限制,在PInvoke调用中什么样的结构可用作返回类型。我不确定它是否支持数组成员


此外,CLR不支持封送std:strings。你必须编写一些C++代码来以更友好的方式返回(例如输出LPSR参数)。

< P> >我很抱歉,因为我差点忘了,我得到了解决方案。我从C++函数TestPncKEY()返回Strut指针,然后使用ItPtR将该指针作为空指针,然后使用MalHal.pTrtoStuttSuffor()函数将其映射到C ^结构中。谢谢你的支持,……<你的名字>你忘记了告诉我们C++结构代码。C++代码中的结构与C结构的结构相同,如结构调用pINKEKEL调用{int MyNUM〔5〕};在调用函数C++之后,它将这个结构变量从那里返回到我想封送的C。
input = PInvokeData.TestPInvoke();
struct pinvoke_call
{
    int mynum[5]
};