2012-12-03 30 views
-1

我處於學習c#/ .NET的相當早期階段,使用MonoDevelop來完成我的工作。我遇到過一些API是用c或有時用C++開發的。我一直在尋找信息,讓我開始實現用c或C++編寫的API,以便我可以將它們用於我的c#項目。我現在沒有任何具體的代碼來顯示你,我需要的是指向正確的方向。尋找教程或基本信息,讓我開始在C#中爲初學者實現C/C++ API

這裏是一個地方採樣,我仔細閱讀:

我想在C#實現C/C++ API。我已經做了一些研究,但我無法入門。

http://www.codeproject.com/Articles/1285/Calling-API-functions-using-C(一個有些過時的文章,看起來是可行的,但似乎並沒有走得很遠。)

​​(一些基礎知識,但沒有太多的細節正在發生的事情上。)

發現在SO一些東西: C api to C# GUI (這看起來farily好)

https://stackoverflow.com/questions/9747607/c-apivs-2005-integrate-into-c-sharp-vs-2010project (無答案給出)

talking to C from C# (看起來不錯,關於Pinvoke的一些東西)

無論如何,我有點不知所措,可以用一些指導讓我開始。也許這對於noob to byte [sic]關閉太多了?

任何幫助,非常感謝。 CHEERS

+0

對於C,你需要一個C++/CLI(更容易使用)或COM(也可用於非.NET語言)封裝。 P/Invoke只適用於簡單的功能。 –

+0

你的問題到底是什麼? –

+0

嗨Ramhound,我想用一些用c或C++編寫的API(或者包裝它們或者其他),以便我可以在我的c#項目中使用它們。我嘗試瞭解如何做到這一點的信息,但我不知所措,需要一些幫助。 (這有點更清楚嗎?) –

回答

3

嘗試SWIG - 它是一種創建用於許多語言的C和C++代碼包裝的工具。

我已經使用了很多次,效果很好。基本上,您只需定義要包裝哪些C和C++代碼文件/庫,並且SWIG會生成相應的C#類(以及一些樣板代碼),您可以將其簡單添加到C#項目中(當然,您必須編譯C/C++部分也使它成爲一個DLL)。

例如,你可能有小的C++庫,過班

class Foo { public: int myMethod(Bar& bar); } 
class Bar { ... } 

SWIGing後,你的C#代碼看起來是這樣的:使用類++ API

Bar bar = new Bar(); 
Foo foo = new Foo(); 
int result = foo(bar); 
+0

我聽說過SWIG,你的證言使我想我可以試試看,看看它是如何工作的。我會檢查一些教程。這可能是一個好方法。一個API是用來做聲音的,所以它可能不是微不足道的。另一個API可能是現在的右上角......考慮使用另一個GUI工具包。 –