如何调用c++/c#中的cli构造函数以及如何包含cli的DLL

如何调用c++/c#中的cli构造函数以及如何包含cli的DLL,c#,c++-cli,C#,C++ Cli,我有一个c++/cli类,它具有构造函数、析构函数和方法名要求。我需要在c#wcf程序中调用这个方法,所以这就是我在c#wcf代码中调用c++/cli方法所做的 Class1 test= new Class1(); test.requirment(); 我的问题是c#程序如何知道它引用的是哪个c++/cli程序,我添加了这个cli dll作为对c#wcf程序的引用,并将其用作命名空间。因此,我想知道我所做的是否正确,还想知道是否有其他方法可以做到这一点,或者是否需要在c#程序中更改任何其他设置

我有一个c++/cli类,它具有构造函数、析构函数和方法名要求。我需要在c#wcf程序中调用这个方法,所以这就是我在c#wcf代码中调用c++/cli方法所做的

Class1 test= new Class1();
test.requirment();

我的问题是c#程序如何知道它引用的是哪个c++/cli程序,我添加了这个cli dll作为对c#wcf程序的引用,并将其用作命名空间。因此,我想知道我所做的是否正确,还想知道是否有其他方法可以做到这一点,或者是否需要在c#程序中更改任何其他设置。

这是由项目引用定义的(右键单击项目->添加引用…)。如果C++/CLI项目位于同一解决方案中,则应将其添加到“项目”选项卡下,否则请选择“浏览”并选择文件系统上的C++/CLI程序集

在这方面,C++/CLI项目和程序集与任何其他.NET项目或程序集没有什么不同


为了确保代码中的标识符“Class1”引用了正确的类型,可以使用Go-To定义,它应该显示定义类型的位置。如果存在歧义或缺少引用,代码无论如何都不会编译。

我认为您所做的是正确的,您不需要做任何其他事情。确保Class1在C++/CLI程序集中声明为托管类(public ref class Class1),然后就可以开始了


由于您添加了C++/CLI程序集作为对包含WPF代码的程序集的引用,并在using子句中添加了名称空间,因此运行时和编译器有足够的信息来解决这些问题。

您只能做得稍微好一点,就像您已经做的那样。如果您的C++/CLI类包含一些本机资源(通常是使用C++/CLI的唯一原因),并且您已经正确实现了C++/CLI“析构函数”,即
~Class1()
方法:

using (var test1 = new Class1()) {
    test1.requirement();
}
这是因为每个C++/CLI类默认实现
IDisposable
,并将
~Class1()
映射到
Dispose
的实现