使用带有.NET API的非托管C++库
Using an unmanaged C++ library with a .NET API
我有一个项目,我必须使用API来读取专有文件类型的文件。它是闭源代码的,只是一堆DLL,可以作为引用添加到我的项目中(目前我使用的是C#)。然而,我也希望使用C++库OpenMS(http://open-ms.sourceforge.net/)以便管理和分析我获得的数据。我已经阅读了一些关于P/Invoke和创建包装器的内容(以及其他一些建议的其他方法,例如:http://www.codeguru.com/cpp/cpp/cpp_managed/interop/article.php/c6867),但我不确定该如何处理,最好的方法是什么,尤其是因为我看到的大多数例子都很简单,而且这个库有很多复杂的数据类型等。由于库很大,有可能自动化创建包装器的过程吗?
您不会将非托管DLL添加为引用;仅适用于用.NET语言编写的托管DLL。
如果您使用C#,p/Invoke是您唯一的选择。是的,这样做所花费的难度和时间将随着图书馆的复杂性而成比例地增加。您需要确保库使用的所有数据类型都有托管等价物,并在必要时自己明确定义它们。不幸的是,我不知道有什么方法可以使这个过程自动化。
如果可以选择切换到C++/CLI,那么您将有更轻松的时间,因为您可以直接使用非托管库,并将其与.NET代码混合使用。
Mono开发人员实际上开发了与p/Invoke或C++/CLR不同的东西,并且可能对C#开发人员更友好
http://tirania.org/blog/archive/2011/Dec-19.html
问题是它现在有多成熟,但你可以玩它并学习,
https://github.com/mono/cxxi
不要嘘,这个工具可能会帮助你-swig
- 用于访问容器<T>数据成员的正确 API
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在gtest.中使用fff.h模拟系统API
- 有没有任务栏API可以立即应用注册表更改
- C++win32 API创建多个类似视口的窗口
- 使用libcurl提交批量url的正确BING Api POST url是什么
- 如何将真正的字符串从python c-api转换为python脚本
- 使用Qt框架在c ++类中创建API调用
- Libreoffice API (UNO):需要更改用户的 xTextField 文本
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- 使用 Python Extension API 包装复杂C++类
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 第三方 API 中的编译错误 - Visual Studio
- Tensorflow c++ api undefined reference to 'tflite::D efaultErrorReporter()'
- clang 的 libFuzzer 可以在同一二进制文件中测试超过 1 个 API 吗?
- Issues with Win32 ReadProcessMemory API