Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++调用C方法,它传递完整对象模型_C#_C++_Com_Interop_Ccw - Fatal编程技术网

C# 从非托管C++调用C方法,它传递完整对象模型

C# 从非托管C++调用C方法,它传递完整对象模型,c#,c++,com,interop,ccw,C#,C++,Com,Interop,Ccw,我在C中有类似于以下内容的内容: public class ClassA { int Id { get; set; } ClassB[] ClassBItems { get; set; } } 及 < P>我想把这个对象模型传递到非托管C++中。即从非托管C++代码中调用,例如“GETCHILCA:CYRLA”。< /P> 到目前为止,我已经成功地使用COM/ccW将管理对象的单个对象或数组从非托管C++传递到非托管C++

我在C中有类似于以下内容的内容:

    public class ClassA
    {
        int Id  { get; set; }
        ClassB[] ClassBItems  { get; set; }    
    }  

< P>我想把这个对象模型传递到非托管C++中。即从非托管C++代码中调用,例如“GETCHILCA:CYRLA”。< /P>

到目前为止,我已经成功地使用COM/ccW将管理对象的单个对象或数组从非托管C++传递到非托管C++,但还没有通过它内部的CaseB类。p> 我的问题是:

如何传回ClassA,其中包含一个ClassB数组? 到目前为止,我只能从C传回结构。我上面的例子是我实际上想要传回的类。即对数据的引用。
澄清一下,非托管代码将调用托管代码。

您不能直接这样做。不能从本地C++调用C方法,反之亦然。如果你传递了一些东西,它总是一个简单的C结构,没有方法

但是有一些方法可以解决这个问题:

使用C++/CLI。 从C类中生成COM对象。
如果您不想这样做,您可以尝试通过将回调传递给非托管代码或类似的方式来实现。但我认为这会相对困难和混乱。

你不能直接这样做。不能从本地C++调用C方法,反之亦然。如果你传递了一些东西,它总是一个简单的C结构,没有方法

但是有一些方法可以解决这个问题:

使用C++/CLI。 从C类中生成COM对象。
如果您不想这样做,您可以尝试通过将回调传递给非托管代码或类似的方式来实现。但我认为这会相对困难和混乱。

我知道不能真正调用C方法,但可以使用COM调用.net代码,这是相同的概念。我很乐意从我的C类中创建COM对象,但是我能保持我在原始帖子中提到的相同结构吗?谢谢。我知道你不能真正调用C方法,但是你可以使用COM调用.net代码,这是相同的概念。我很乐意从我的C类中创建COM对象,但是我能保持我在原始帖子中提到的相同结构吗?谢谢
    public class ClassB
    {
        int SomeOtherId {get;set;}
    }