Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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+中生成函数+;具有clr支持的项目可互操作_C#_Interop_C++ Cli_Clr - Fatal编程技术网

C# 在c+中生成函数+;具有clr支持的项目可互操作

C# 在c+中生成函数+;具有clr支持的项目可互操作,c#,interop,c++-cli,clr,C#,Interop,C++ Cli,Clr,在我的C#项目中,我希望能够互操作clr项目中定义的函数。 我通常使用 __declspec( dllexport ) 在本地C++项目的函数定义中。如何使clr项目的函数可互操作?使ref类public和要调用的方法public。然后引用您的C#项目中的项目。这是可行的,但我不能这样做,因为clr项目使用该C#项目作为引用。因此,如果我这样做,它将导致循环依赖。所以我使用了互操作,因为它不需要我使用clr项目作为参考,从这个问题上看,这应该是显而易见的吗?显然,您必须将您的C#项目一分为二

在我的C#项目中,我希望能够互操作clr项目中定义的函数。 我通常使用

 __declspec( dllexport )

<>在本地C++项目的函数定义中。如何使clr项目的函数可互操作?

使
ref
public
和要调用的方法
public
。然后引用您的C#项目中的项目。

这是可行的,但我不能这样做,因为clr项目使用该C#项目作为引用。因此,如果我这样做,它将导致循环依赖。所以我使用了互操作,因为它不需要我使用clr项目作为参考,从这个问题上看,这应该是显而易见的吗?显然,您必须将您的C#项目一分为二,分离出您的C++/CLI项目需要的声明。或者将它们移动到C++/CLI项目,或者使用接口或委托,这些接口或委托允许C++/CLI代码符合C#中建立的签名,以便C#可以调用它。