【问题标题】:How to call function in c++ which return a class object to c#如何在c ++中调用将类对象返回给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# 端将其反序列化为您想要的对象?

标签: c# c++ marshalling


【解决方案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

【讨论】:

    猜你喜欢
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多