我可以在C#项目中使用C ++编写的DLL吗?

时间:2009-07-23 12:00:29

标签: c# c++ dll interop

问题是 - 我想用C ++编写一个模板类,把它放在一个DLL中,然后从我的C#项目中调用它。可能吗?能否请您提供有关如何做的任何参考或文章?

修改
我希望DLL用非托管 C ++

编写

5 个答案:

答案 0 :(得分:6)

无法导出模板类。直到有人实例化它才会存在。您应该显式实例化它,然后将其导出为通常的类。

答案 1 :(得分:1)

我认为这个问题可以帮到你:

Use C++ CLI template class in C#

答案 2 :(得分:1)

你可以像创建任何其他DLL一样创建它 - DLL背后的主要思想是它可以用任何编程语言创建,并且可以与其他所有DLL一起使用。请记住,C ++是不受管理的,因此必须谨慎对待。查找实例here(MSDN论坛)。

One more link.

通常,使用DllImport装饰器从您在C ++中创建的DLL文件中导入函数。 MSDN中的示例:

using System.Runtime.InteropServices; // DllImport
public class Win32 {
  [DllImport("User32.Dll")]
  public static extern void SetWindowText(int h, String s);
}

答案 3 :(得分:1)

通过使用C ++ / CLI,您可以将C ++类公开为.NET类,并使用兼容的功能。但是,您不能公开模板定义,但可以使用专门化该模板的具体类。

构建C ++ / CLI类时,您可以像任何其他.NET程序集一样引用它。

答案 4 :(得分:0)

据我记得有一点问题。 C#使用C ++ Dll(托管和非托管)是可能的 非托管C ++可能使用C#Dll(您需要通过COM和接口执行此操作)。

我会看看能否找到更详细的信息