2009-12-23 196 views
1

是否有可能將C代碼編譯爲Visual C++ dll?我正在考慮使用一些.Net項目的C代碼,並試圖確定這是否是一個選項。將C代碼編譯爲Visual C++ dll?

感謝, 貝基

+0

「Visual C++ dll」是什麼意思?有些DLL是編譯器中立的,並且由操作系統加載,還有一些DLL是Visual Studio的組件,有些DLL通過C++運行時與Visuall C++一起重新分發。 – 2009-12-23 10:49:41

+0

我的意思是我可以用作.Net項目中的引用的dll,並使用引用的dll中的C方法 - 如果這是有道理的! – 2009-12-23 10:53:10

回答

1

由於C++在很大程度上是向後兼容C,你應該能夠重新編譯使用C++編譯器的代碼,除非代碼使用了一些C99的功能。但是,請記住,C++/CLI不是標準的C++,因此可能會有其他問題。

正如aJ所說,如果你想避免名稱混亂,你必須'extern C'的符號。

完成此操作的另一種方法是將C庫作爲標準本機代碼併爲其編寫一個精簡的C++/CLI層。然後將C++/CLI層公開給.NET應用程序。

+0

你有什麼資源可以讓我指向精簡的C++/CLI層,並且暴露給.Net,因爲我是一位C/C++初學者:o) – 2009-12-23 11:12:14

+0

如果它是一個bog標準的Windows DLL編譯用C編譯器,然後PInvoke應該這樣做 - http://msdn.microsoft.com/en-us/library/aa446536.aspx – 2009-12-23 11:31:45

+0

@Becky:一個(非常)基本的C++/CLI介紹在這裏:http:///msdn.microsoft.com/en-gb/magazine/cc163681.aspx。爲了編寫一個.NET層,你可以使用上面的一些結構像CLI類來創建.NET可以理解的東西,並從那裏直接調用你的C代碼。編譯器將處理託管和非託管代碼之間的轉換。 – 2009-12-23 11:52:04