2012-08-12 15 views

回答

0

extern「c」是C++特有的,因爲它告訴編譯器導出函數「就像在c」中一樣,所以你不需要在c中。

如果你想讓它與c和C++一起編譯,你可以這樣做。

#ifdef __cplusplus 
extern "C" { 
#endif 

__declspec(dllexport) void D() 
{ 
} 

#ifdef __cplusplus 
} 
#endif 

你還需要告訴VS構建一個DLL,而不是一個可執行文件。

0

不能調用直接從C#機DLL函數之間的互操作之間的互操作,但你可以通過一個稱爲P/Invoke的設施使用它們。 http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

另一種選擇是在C++/CLI中編寫包裝器。 C++/CLI幾乎是允許.Net代碼打包和使用本地內容的標準方式。

最後,您還可以使用P/Invoke從C#中調用q.dll函數,而不是使用包裝器。