代码之家  ›  专栏  ›  技术社区  ›  Gili

从C++到C语言的编组引用类型

  •  1
  • Gili  · 技术社区  · 15 年前

    我想调用下面的C++函数(由DLL导出)。

    void createVm( 
      const jace::VmLoader& loader, 
      const jace::OptionList& options, 
      bool ignoreUnrecognized = true );
    

    我已经找到了将原语从C++到C语言封送的文档,但我不知道如何处理引用类型或非PRITMIVE类型,例如VMLoad或OptionList(两者都是类)。我试图用C++层包一个C++ API,委派给实际的方法实现的底层C++代码。

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   JaredPar    15 年前

    AFAIK,PInvoking进入C++构造的函数不是一个支持的操作。你也许可以让它工作,但我想你会发现问题的。

    支持的是编写一个简单的C包装器函数,它调用C++函数。而将pinvoke转换为包装函数,这将实现这一技巧。

        2
  •  0
  •   nichow    15 年前

    假设C++ DLL正确地导出引用所传递的类型,那么您可以使用调用DLL的轻量级管理的C++包装器。使用托管C++,您可以直接调用本机C/C++ + LIBS和DLL,同时仍然从生成的程序集导出托管接口。其他.NET语言可以像调用任何其他程序集一样调用托管接口。这是一个额外的开销,但它可以是最快的方式完成。