2016-02-11 77 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。 –