c# - 在 C# 项目中使用 C++ API

标签 c# c++ language-interoperability managed-code autodesk-navisworks

是否可以在 C# 项目中使用 C++ API(一系列头文件和 CPP 文件)?

也许可以将这些文件编译成.obj.lib 文件并将它们包含在Visual C# 项目中? Crypto++ 也做了类似的事情。

如果可能的话,这样做有什么缺点吗?

上下文和导入信息:

  • C++ API 称为 NWCreate,由 Autodesk Navisworks 开发
  • 我正在使用 Microsoft Visual Studio C# 2010
  • 我们现有一个庞大的 C# 代码库,其中我们将在 navisworks 插件中执行的大部分操作已经用 C# 编码(来 self 们制作的其他 Autodesk 项目)。因此,必须用 C++ 重写所有这些操作无异于重新发明轮子。

最佳答案

至少,您有 2 种方法可以从 .NET 调用 C/C++ API:

  • 将 C/C++ API 编译为 dll,然后使用 PInvoke 从 .NET 调用它
  • 使用Managed C++ (VC++),然后使用IJW封装原生代码,IJW会生成可直接从.NET调用的托管代码

关于c# - 在 C# 项目中使用 C++ API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23925608/

相关文章:

c# - 在 Excel 中需要 12 小时格式

c# - 单击时导致 IndexOutOfRangeException 的 Datagridview

c++ - 同时检查指针或引用类型的 C++ dynamic_cast 的设计考虑

c++ - Dart/flutter : getting data array from C/C++ using ffi?

c# - 无法加载文件或程序集。即使它位于正确的位置并且构建良好

c# - 以编程方式绑定(bind)到不断变化的 ViewModel

c++ - 测试目录中的另一个 main.cpp

c++ - 2 Nibbles 结构、赋值运算符和位集。如何?

c++ - .NET 平台调用中使用的命名约定

c - 将 swift 字符串传递给 c 函数 char *