有没有任何工具可以将一些C++类打包到C#中
Are there any tools could package some C++ class to C#?
一个软件SDK通过C++类库提供了一些API,包括h、lib、dll文件。
但是,我想使用C#来处理库。
那么,有什么工具可以将C++类库打包到C#中吗?或者一些建议?
我不想使用CLI,因为类太多了。
使用C++/CLI,这是上托管代码中使用的C++方言。NET平台。该语言主要是为在像您这样的应用程序中使用而设计的。
请看这篇文章(标题有点夸张,但内容不错)。其他对C++代码包装器的搜索应该会为您提供更多的示例。
正如Barry所指出的,使用平台调用(p/invoke)调用可以从DLL调用本机代码。
如果要手动包装库,可以直接使用C++/CLI在API周围创建托管包装,或者使用p/Invoke直接从C#调用本机代码。
如果你想自动创建一个包装器,我相信SWIG项目有一个C/C++=>C#模块。SWIG模块在后台使用P/Invoke(因此,作者声称,它在Mono上也可用)。它似乎可以为您处理P/Invoke包装器的许多细节(.Net和Mono)。我没有用过,但它似乎正是你想要的。
您可以做的一件事是围绕C++类库构建COM包装器。一旦C++类被打包为COM对象,您就可以从C#代码中使用它们。
参见http://msdn.microsoft.com/en-us/library/aa645736(v=vs.71).aspx("COM互操作第1部分:C#客户端教程")
如果你需要关于如何将C++库包装到COM中的信息,我可以建议你阅读微软出版社的优秀书籍《内部COM》。
相关文章:
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 在clang++预处理器中确定gcc工具链版本
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 参数化自定义CMake工具链
- 如何在QT中的自定义视频小工具t上绘制矩形
- 使用 C++ 和 i2c 工具从虚拟 i2c 写入和读取
- 用于C++的静态二进制检测或二进制重写工具和框架
- 在OSX上使用CMake将Adobe的XMP工具包构建为共享库的最简单方法是什么?
- AWS IoT 开发工具包:通过 TCP 端口 443 使用 MQTT
- 在官方张量流 resnet50 模型上运行 tflite 精度工具
- Q没有管理权限的 exe 无法启动维护工具
- C++合并排序可视化工具
- 为Bazel工具链指定sysroot
- 在自动工具中包含用于不同bin_Programs的不同库
- 如何使用MSVC 2019创建和使用Qt 5.14.0自定义小工具插件
- Eclipse CDT clang 工具链 - 无法从链接器选项中删除 stdlibc++,但可以添加 libc++,E
- 使用不同的工具时,Eccodes 会产生不同的结果
- Clang 工具,用于提取给定 lambda 类型的 lambda 主体
- 构建LLVM 10 C++工具链的问题
- 使用即将推出的C++反射工具打印类型的全名