问题是 - 我想用C ++编写一个模板类,把它放在一个DLL中,然后从我的C#项目中调用它。可能吗?能否请您提供有关如何做的任何参考或文章?
的修改
我希望DLL用非托管 C ++
答案 0 :(得分:6)
无法导出模板类。直到有人实例化它才会存在。您应该显式实例化它,然后将其导出为通常的类。
答案 1 :(得分:1)
我认为这个问题可以帮到你:
答案 2 :(得分:1)
你可以像创建任何其他DLL一样创建它 - DLL背后的主要思想是它可以用任何编程语言创建,并且可以与其他所有DLL一起使用。请记住,C ++是不受管理的,因此必须谨慎对待。查找实例here(MSDN论坛)。
通常,使用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和接口执行此操作)。
我会看看能否找到更详细的信息