如何在c ++中调用将类对象返回给c#的函数

Posted

技术标签:

【中文标题】如何在c ++中调用将类对象返回给c#的函数【英文标题】:How to call function in c++ which return a class object to c# 【发布时间】:2014-01-24 13:23:14 【问题描述】:

C#函数调用c++中暴露的函数又调用abc类的some_fun(int),我应该如何在C#some_funenter code here中获取abc的对象@

C++:

class abc

    public: abc some_fun(int x);

这个函数调用abc类的some_fun(int), 我应该如何在 C# some_fun (marshalled object) 中获取 abc 的对象

extern "C" SAMPLEDLL_API void __cdecl some_fun(int x);

来自 c# 包装器:我如何编组它

public static extern IntPtr some_fun(int abc);

【问题讨论】:

如何在 c++ 端将其序列化为 JSON,然后在 c# 端将其反序列化为您想要的对象? 【参考方案1】:

您必须从您的 C# 程序中“Pinvoke”您的 c++ 函数。 当你这样做时,你必须用 C# 术语声明你的函数签名。 在该声明中,您必须提供一个 C# 结构来表示您尝试传递的 C++ 结构。

例如,如果您有 C++ 结构:

struct FOO

public long Dummy;
;

在您的 C# 程序中,您必须定义一个 C# 结构

public struct CSFOO

public int Dummy;

您将把它传递给您的 PINVOKed 函数。

此链接可以帮助您:http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

【讨论】:

以上是关于如何在c ++中调用将类对象返回给c#的函数的主要内容,如果未能解决你的问题,请参考以下文章

《精通C#》第十三章 对象的生命周期

在C语言中,如何给函数分配内存?

Python / IronPython-仅引用类对象时如何返回类的特定属性的值?

objective-c 中如何在一个函数中调用自己类中的另外一个函数

C ++:将对象按值传递给同一类的成员函数

c# Unity - 如何在另一个类中调用结构对象数组