【问题标题】:How would I import a function template using PInvoke?如何使用 PInvoke 导入函数模板?
【发布时间】:2010-03-03 15:47:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# c++ dll templates pinvoke


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多