Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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++/CLI到C#?_C#_.net_Dynamic_C++ Cli - Fatal编程技术网

从C++/CLI到C#?

从C++/CLI到C#?,c#,.net,dynamic,c++-cli,C#,.net,Dynamic,C++ Cli,我的朋友用C++/CLI构建了一个应用程序(控制台应用程序) 我在用C语言编程 我在C#中为他建立了一些DLL,它根据他发送的参数进行计算 我的函数(在我的C#dll中)如下所示: bool LongCalc(动态对象) { ... } (同样,obj需要从他的c++/cli发送到我的c#dll) 我的问题: 如果他在自己的cpp中创建了一个对象,如: cppObj { 提案一,提案二,提案……n } 我能在我的c#中读到他的obj吗 obj.prop1 obj.prop2? 他或我需要做

我的朋友用C++/CLI构建了一个应用程序(控制台应用程序)

我在用C语言编程

我在C#中为他建立了一些DLL,它根据他发送的参数进行计算

我的函数(在我的C#dll中)如下所示:

bool LongCalc(动态对象)
{
...
}
(同样,obj需要从他的c++/cli发送到我的c#dll)

我的问题:

如果他在自己的cpp中创建了一个对象,如:

cppObj
{
提案一,提案二,提案……n
}
我能在我的c#中读到他的obj吗

obj.prop1
obj.prop2?

<>他或我需要做些什么来让我和他的Objor合作?< /P> < P>如果他从C++应用程序中使用你的C语言,那么我猜他是使用了托管C++。如果是这样,那么他定义C++类是有意义的,这样你就能调用它的方法。

< p>答案很大程度上取决于你的朋友是如何消耗你的C dll dll。< /p> <>如果他使用纯C++,通过.NETCOM互操作来消耗.NET组件,那么我认为,在示例中,不支持一个纯C++类,比如CPPOBJ >,因为在运行时没有方法知道如何调用对象的方法。 <>为了使此工作在C语言侧使用<代码>动态< /Cord>参数,C++类可能必须是COM对象,并实现<代码> IDISPATT/<代码>,这样CLR将有能力动态调用C++对象上的方法。
<>我不确定100%代码<代码>动态< /COD>实际上支持COM互操作中的<代码> IDISPATT/<代码>,但我看不出它不应该的理论原因。

您需要具体说明这是C++ CLR还是标准C++?PeteKirkham,对不起。它的cpp CLR.Yes,
动态
支持COM。这是COM互操作的天赐良机。