我想将C ++库暴露给C#应用程序,我决定采用C ++ / CLI包装器方法而不是P / Invoke。我现在面临的问题是如何使用泛型将C ++库中的模板化类暴露给C#应用程序。 在C ++方面,我有:
template <typename T> class Someclass;
我的目标是能够将以下类型公开给C#app
class Someclass<T> {}
所以现在的问题是我的C ++ / CLI包装器应该如何。我尝试了天真的方法,并在C ++ / CLI中创建了模板化类型,当然我无法使用泛型参数在C#中实例化该类。如果我将类暴露为泛型类,我将无法将其传递给C ++。
免责声明:我是C ++新手所以请保持温柔:)
我熟悉泛型和模板之间的差异,因此无需解释这些差异。我有这种不好的感觉,我想要的是不可行的,但由于我对C ++比较陌生,我希望我能以某种方式实现它。
答案 0 :(得分:0)
AFAIK:你必须编写一个C ++泛型。
http://www.codeproject.com/KB/mcpp/cppcligenerics.aspx
我没有看到C#应用程序如何理解模板是在编译时计算的,因此C#应用程序不会在DLL中看到模板。