Q
C#和C++庫
5
A
回答
3
您不能直接在託管代碼中使用C++類。主要問題是無法使用與C++代碼所使用的相同的內存分配器,並且無法輕鬆地調用構造函數和析構函數。一位微軟員工發佈了a blog post以表明這不是不可能的。我不會推薦這樣做。
COM是一個解決方案,但總是需要一個相當大的重寫和良好的COM編程技巧。 C++/CLI語言中的managed class wrapper通常是最佳解決方案。你可以看看SWIG tool來考慮自動生成那些包裝類。但要小心,這個工具可以輕鬆創建比解決問題更多的問題。
3
有兩種方式,都使用適配器(將C++類映射到.NET類):
- C++/CLI
- COM
前者避免了通過COM去,大部分的C++代碼的可能是能夠簡單的編譯與正確的開關。
附加說明:理論上P/Invoke可能是可能的,但所有C++語義都會丟失,您需要手動處理C++對象生命週期(並且實例引用爲IntPtr
)。另外當然你需要調用重名的名字......
3
另一種選擇是在C++/CLI中編寫一個託管包裝器。我更喜歡使用P/Invoke而不是使用P/Invoke。
相關問題
- 1. ref和庫C++/C#
- 2. C和C++庫錯誤
- 3. Gtest與大C和C++代碼庫
- 4. c和C++與庫的鏈接
- 5. C/C++ PLSA庫
- 6. C/C++ MultiMap庫
- 7. c/C++ NLP庫
- 8. C++ SLMATH庫和SSE優化
- 9. MD5和SHA1 C++哈希庫
- 10. C++繼承和動態庫
- 11. xcodebuild和C標準庫
- 12. C#類庫和報告
- 13. matlab共享C++庫和OpenCL
- 14. Visual C++ 2010和Lapack,Blas庫
- 15. Python scipy.weave和STANN C++庫
- 16. 對象數據庫和C#
- 17. C++圖形和音頻庫
- 18. 使用數據庫和C#
- 19. 從數據庫和C#
- 20. C#web和ftp爬蟲庫
- 21. C#PDF控件和庫
- 22. c和php的壓縮庫
- 23. 混合C/C++庫
- 24. 官方的Windows C/C++編譯器和C庫
- 25. C標準庫和C POSIX庫之間的區別
- 26. XCode 6.1 - 丟失項目模板(C++庫和C++ STL庫)
- 27. C#庫?
- 28. 加密與C++和WinCrypt(RSA算法)庫和解密使用C#
- 29. 將C庫轉換爲C++庫
- 30. C++和Objective-C