如何通过C ++ / CLI将模板从C ++公开到C#

时间:2011-08-10 20:37:56

标签: c++-cli

我想将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 ++比较陌生,我希望我能以某种方式实现它。

1 个答案:

答案 0 :(得分:0)

AFAIK:你必须编写一个C ++泛型。

http://www.codeproject.com/KB/mcpp/cppcligenerics.aspx

我没有看到C#应用程序如何理解模板是在编译时计算的,因此C#应用程序不会在DLL中看到模板。