2016-02-11 61 views
0

我一直在开发C#应用程序一段时间,但是最近我得到了一个需要计算机视觉的项目。因此,我的公司已选择为特定的计算机视觉软件包购买API/SDK的许可证。但是,此API/SDK提供在:将C++ SDK集成到C#程序

C++,ActiveX 和基于Direct Show的API/SDK集成。

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

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

简单地用C++开发整个程序会简单吗?

回答

2

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

该库可能作为一个或多个dll文件支持lib文件以方便访问这些方法(否则,您将不得不在使用C++时手动查找库中的方法)。

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

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

DllImport属性可能是你要找的。有关这方面的信息可以在MSDN中找到(https://msdn.microsoft.com/en-us/library/aa984739%28v=vs.71%29.aspx)。

无论你想自己编写C++都取决于你。如果你想创建一个用户界面,而不是在自己的代码中做太多性能关键的东西,我只会坚持C#,你觉得在家里;-)

+0

.so和.a怎么样?他们没有得到任何爱吗?没人关心,呜咽!单! – user4581301

+0

因此,如果我使用DLLImport属性,我可以将性能关键的东西留给C++库,并使用C#来构建接口? – user3095420

+0

是的,然后在C++库(本机代码)中完成繁重的工作。关于@ user4581301:这些库用于Linux。我猜你正在使用Windows。 –