有两种方法,都使用适配器(将C++类映射到.NET类): C++/CLI COM 前者避免了通过COM进行转换,大部分C++代码可能只需使用正确的开关进行编译即可。另外:理论上,P/Invoke可能是可行的,但所有的C++语义都会丢失,您需要手动处理C++对象生命周期(以及实例引用作为IntPtr)。当然,您还需要调用修饰过的名称...
您不能直接在托管代码中使用C++类。 主要问题是无法使用与C++代码相同的内存分配器,以及无法轻松调用构造函数和析构函数。 一位Microsoft员工发布了博客文章以表明这并非不可能。 我不建议这样做。COM是一种解决方案,但通常需要进行相当大的重写和良好的COM编程技巧。 C++/CLI语言中的托管类包装器通常是最佳解决方案。 您可以查看SWIG工具,考虑自动生成这些包装器类。 但请注意,此工具可能会比解决的问题更多。