回答
由於C++在很大程度上是向後兼容C,你應該能夠重新編譯使用C++編譯器的代碼,除非代碼使用了一些C99的功能。但是,請記住,C++/CLI不是標準的C++,因此可能會有其他問題。
正如aJ所說,如果你想避免名稱混亂,你必須'extern C'的符號。
完成此操作的另一種方法是將C庫作爲標準本機代碼併爲其編寫一個精簡的C++/CLI層。然後將C++/CLI層公開給.NET應用程序。
你有什麼資源可以讓我指向精簡的C++/CLI層,並且暴露給.Net,因爲我是一位C/C++初學者:o) – 2009-12-23 11:12:14
如果它是一個bog標準的Windows DLL編譯用C編譯器,然後PInvoke應該這樣做 - http://msdn.microsoft.com/en-us/library/aa446536.aspx – 2009-12-23 11:31:45
@Becky:一個(非常)基本的C++/CLI介紹在這裏:http:///msdn.microsoft.com/en-gb/magazine/cc163681.aspx。爲了編寫一個.NET層,你可以使用上面的一些結構像CLI類來創建.NET可以理解的東西,並從那裏直接調用你的C代碼。編譯器將處理託管和非託管代碼之間的轉換。 – 2009-12-23 11:52:04
肯定。如果你想擺脫name mangling使用"extern "C" { /*...*/ }
構造。
同時,請參閱常見問題解答:How to mix C and C++
- 1. 將OpenMP代碼編譯爲C代碼
- 2. 編譯C代碼爲C#
- 3. 在Visual C++ Express中編譯C代碼
- 4. 將C++源代碼編譯爲一個.dll
- 5. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 6. C#編譯爲MSIL代碼
- 7. 將openmp編譯爲pthreads C代碼
- 8. 編譯linux中的visual C++代碼?
- 9. VISUAL C++不編譯我的代碼
- 10. 用C++編譯器編譯c代碼
- 11. 將IronPython代碼編譯爲EXE或DLL
- 12. C代碼編譯
- 13. 編譯C代碼
- 14. 可以將C程序編譯爲DLL
- 15. 通過visual C++編譯器重新編碼代碼
- 16. Visual Studio 2012本地C++ DLL x86編譯
- 17. 如何編譯在Visual C C++編寫代碼表示2010
- 18. Visual C++編譯
- 19. C:編譯C++代碼用C
- 20. 將DLL代碼從Borland C++ Builder 6移植到Microsoft Visual C
- 21. 將C代碼翻譯爲彙編代碼?
- 22. 是否有可能將C代碼編譯爲Javascript代碼?
- 23. 將非託管C++代碼編譯爲託管代碼
- 24. 將代碼注入已編譯的dll
- 25. 編譯爲C++代碼(/ TP)和C代碼(iniparser.c)
- 26. 如何將DLL轉換爲C++代碼?
- 27. 有什麼方法可以將Visual C++代碼編譯到Android?
- 28. 在Visual Studio中通過C#類編譯C++代碼
- 29. Visual C++ 2008 Express Edition可以編譯C源代碼嗎?
- 30. 在Visual C#2010 Express中編譯C#代碼
「Visual C++ dll」是什麼意思?有些DLL是編譯器中立的,並且由操作系統加載,還有一些DLL是Visual Studio的組件,有些DLL通過C++運行時與Visuall C++一起重新分發。 – 2009-12-23 10:49:41
我的意思是我可以用作.Net項目中的引用的dll,並使用引用的dll中的C方法 - 如果這是有道理的! – 2009-12-23 10:53:10