P /调用一个纯粹的C ++库?

时间:2010-03-01 06:07:26

标签: .net c++ pinvoke

是否可以P / Invoke纯C ++库,还是必须用C包装?

2 个答案:

答案 0 :(得分:2)

可以P /调用C ++库,但是您需要使用“depends”来查找受损的方法名称(名称如“@ 0!classname @ classname @ zz”),例如方法使用“ThisCall”调用p / invoke中的约定并将实例的引用作为第一个参数传递(您可以将构造函数的结果存储在IntPtr中)。

答案 1 :(得分:1)

“纯”C ++库的名称会被编译器损坏,因此很难让P / Invoke声明正确。 并且C方法在开头有一个下划线,这在C ++中可能不存在。 并且C ++方法需要将此实例作为第一个参数,您必须自己给它。

我认为您需要将C ++ API包装在C兼容的一系列方法中。