我有一个用本地C ++编写的大型应用程序。我还有一个用C#编写的类需要调用。
如果C#类是静态的,那么它就很简单(网上有很多例子)-只需编写混合C ++ / CLI包装器,导出接口即可完成。
然而,C#类是非静态的,并且不能更改为静态类,因为它具有接口(如果尝试使C#类静态,则编译器将生成错误)。
有人遇到过这个问题吗 - 如何将非静态的C#类导出到本地C ++?
如果C#类是静态的,那么它就很简单(网上有很多例子)-只需编写混合C ++ / CLI包装器,导出接口即可完成。
然而,C#类是非静态的,并且不能更改为静态类,因为它具有接口(如果尝试使C#类静态,则编译器将生成错误)。
有人遇到过这个问题吗 - 如何将非静态的C#类导出到本地C ++?
更新2010-11-09
最终解决方案:尝试了COM,这个方法效果很好,但不支持结构体。因此,我选择了一个C++/CLI包装器,因为我绝对需要能够在C++和C#之间传递结构体。我基于这里的代码编写了一个混合模式的.dll包装器:
由于目标类是非静态的,所以我必须使用单例模式来确保我只实例化了一个目标类的副本。这确保了一切都足够快,以满足规格要求。
如果您希望我发布演示项目,请与我联系(尽管公平地说,我正在从C++调用C#,而现在大多数人都想从C#调用C++)。