C++ SDK 集成到 C# 程序中

Posted

技术标签:

【中文标题】C++ SDK 集成到 C# 程序中【英文标题】:C++ SDK intergration into C# program 【发布时间】:2016-02-11 02:03:06 【问题描述】:

我已经开发 C# 应用程序有一段时间了,但是最近我接到了一个需要计算机视觉的项目。因此,我的公司选择为特定的计算机视觉包购买 API/SDK 许可证。然而,此 API/SDK 提供于:

C++、ActiveX 和基于 Direct Show 的 API/SDK 进行集成。

我的问题是天气 C++ 库是 .dll 文件还是其他形式?

如果是这样,有哪些选项可以将 c++ API/SDK 集成到 C# WPF 程序中,以便轻松构建接口并利用其功能?混合不同语言会被认为是不好的做法吗?

用c++简单地开发整个程序会更容易吗?

【问题讨论】:

【参考方案1】:

C++ 中有两种类型的库:dll 和 lib。 Dll 文件是动态链接的(也就是只在运行时需要),而 lib 文件将被链接到您的程序中。

该库可能以一个或多个带有支持 lib 文件的 dll 文件形式提供,以便更轻松地访问方法(否则在使用 c++ 时您必须手动在库中查找方法)。

要从 C# 中使用它们,您有两个选择:构建 C++/CLI 包装器或使用 DllImport 属性导入方法。

真的不推荐使用包装方法。只有在 c# 和 c++ 之间进行双向通信时,我才会使用它(通过两种方式,我的意思不仅仅是将基本参数传递给 c++ 并返回基本值)。

DllImport 属性可能是您正在寻找的。相关信息可以在 MSDN (https://msdn.microsoft.com/en-us/library/aa984739%28v=vs.71%29.aspx) 中找到。

是否要自己编写 c++ 取决于您。如果你想创建一个 UI 而不是在自己的代码中做太多对性能至关重要的事情,我会坚持使用 C#,让你有宾至如归的感觉;-)

【讨论】:

.so 和 .a 怎么样?他们得不到爱吗?没人在乎,呜呜!单声道! 所以如果我使用 DLLImport 属性,我可以将性能关键的东西留给 C++ 库并使用 C# 来构建接口吗? 是的,繁重的工作将在 C++ 库(本机代码)中完成。关于@user4581301:这些库用于 linux。我猜你正在使用 Windows。

以上是关于C++ SDK 集成到 C# 程序中的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Astra sdk 与 Visual Studio 2013 C# 集成?

Debian系统中如何将matlab编译后的代码集成到c++中

C#总结调用C++动态库

C# + LibreOffice SDK

将现有程序集成到新的 GUI

结合 C++ 和 C#