我在 C++ 函数中为外部调用定义了:
template<typename T>
void __declspec(dllexport) SwapMe(T *fisrt, T *second)
{
std::cout << typeid(T).name() << std::endl;
T temp = *first;
*first = *second;
*second = temp;
}
我想在 C# 程序中使用它。我试过这样:
unsafe class Program
{
[DllImport("lib1.dll", EntryPoint = "SwapMe")]
static extern void SwapMe<T>(T first, T second);
...
}
但是,我收到这样的错误:
泛型方法或泛型类中的方法是内部调用、PInvoke,或者在 COM 导入类中定义。
似乎是,C# 中的 Generic 是托管类型,它与 C++ 中的非托管模板的体系结构完全不同。
如何在我的 C# 程序中使用模板方法?