2010-03-03 49 views
1

在我的C#代码中,我需要从我编写的C++ Dll中调用一个函数。函数是通用的。 所以,我应该只是导入它是这样的:如何使用PInvoke导入函数模板?

[DllImport("myDll.dll")] 
private static extern TypeName functionName<TypeName>(int arg1, int arg2); 

这是正确的语法? 谢谢。

回答

4

这是行不通的,没有使模板可导出的主流C++编译器。此外,模板由C++编译器通过类型擦除实例化,类似于Java泛型的工作方式。换句话说,具体的可调用函数必须由C++编译器嵌入到DLL中。它们不再是通用的。

作为替代方案,您可以使用C++/CLI语言编写ref类。这产生了一个真正的.NET泛型类,可以被支持泛型的任何.NET语言使用。