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. C和C++庫錯誤
- 4. Linux Clang和Objective-C庫庫
- 5. Python,PyQt和C++庫
- 6. XCode中的C/C++庫和STL C++庫有什麼區別?
- 7. 鏈接到庫C和C++綁定
- 8. c和C++與庫的鏈接
- 9. 與Objective-C和C++的Swift庫
- 10. Gtest與大C和C++代碼庫
- 11. 爲PHP編寫C/C++綁定和庫
- 12. C/C++ PLSA庫
- 13. C/C++ MultiMap庫
- 14. c/C++ NLP庫
- 15. 混合C/C++庫
- 16. C的PGP庫C
- 17. C#存儲庫和繼承
- 18. C#PDF控件和庫
- 19. Visual C++ 2010和Lapack,Blas庫
- 20. 使用數據庫和C#
- 21. c#和精讀器庫的
- 22. xcodebuild和C標準庫
- 23. SIP和ZRTP目標c庫
- 24. Python scipy.weave和STANN C++庫
- 25. 對象數據庫和C#
- 26. 從數據庫和C#
- 27. C#類庫和報告
- 28. C++圖形和音頻庫
- 29. C++繼承和動態庫
- 30. C#web和ftp爬蟲庫