在我的C#代码中,我需要从我编写的C++ Dll中调用一个函数。
所以,我应该像这样导入它吗:

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

这是正确的语法吗?
谢谢。

最佳答案

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

或者,您可以使用C++ / CLI语言编写ref类。这样就产生了一个真正的.NET泛型类,任何支持泛型的.NET语言都可以使用。

关于c# - 如何使用PInvoke导入功能模板?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2372671/

10-17 01:23