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

joe*_*moe 5 .net c++ pinvoke

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

Dan*_*rod 2

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

  • 另一种选择是 C++/CLI。 (5认同)
  • 这是一个糟糕的建议。即使技术上可行,您在尝试 p/invoke C++ 类时也会遇到许多问题。例如,构造函数和析构函数将无法正确调用,.NET 内存处理与 C++“new”和“delete”不兼容,等等。C++/CLI 是一个更好的主意。 (3认同)