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

C++调用C语言选项

  •  2
  • ng5000  · 技术社区  · 16 年前

    我们有本地Win32 C++代码和一组C++程序集,我们希望从C++代码中调用它们。我将我们的期权总结如下:

    1. 使用COM。C代码需要用附加属性(GUID、COMVisible)修饰。C++程序集需要注册ReGASM,然后可以通过COM向本地C++代码提供。

    2. 在本地C++代码中,宿主CLR实例。

    我将对选项3打折,因为我看不到选项2的好处,除了我们不再需要包装器类之外。所以问题是,选项1和选项2的优缺点是什么?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Reed Copsey    16 年前

    IMO表示,选项2将表现最佳,并且是最无缝和可维护的。

        2
  •  1
  •   HasaniH    16 年前

    对于选项2,您不必修改托管库以方便非托管使用,这有时不是一个选项。

    对我来说,这取决于你想在哪里修改代码。

        3
  •  1
  •   AndersK    16 年前

    使用选项2,您还可以非常直接地将整个应用程序转换为C++/CLI,以避免出现托管/非托管转换。转换可能是一个问题,具体取决于您如何使用引用的程序集,即获得性能影响。

    到目前为止,我在C++/CLI方面只有一些积极的经验,我可以建议您这样做。