Có thể P/Gọi một thư viện C++ thuần túy, hay nó phải được bọc trong C?P/Gọi một thư viện thuần túy là C++?
Trả lời
Thư viện C++ có thể là P/được gọi, nhưng bạn sẽ cần phải sử dụng "phụ thuộc" để tìm tên phương thức bị xâu (tên như "@ 0! Classname @ classname @ zz") và các phương pháp ví dụ sử dụng "ThisCall" gọi quy ước trong p/gọi và vượt qua tham chiếu của cá thể như đối số đầu tiên (bạn có thể lưu trữ kết quả của hàm tạo trong một IntPtr).
Một giải pháp thay thế khác là C++/CLI. –
Đây là lời khuyên khủng khiếp. Ngay cả khi nó là kỹ thuật có thể, bạn sẽ gặp nhiều vấn đề MANY cố gắng p/gọi vào các lớp C++. Ví dụ, các hàm tạo và các trình phá hủy sẽ không được gọi đúng cách, xử lý bộ nhớ .NET không tương thích với C++ 'new' và' delete', v.v. C++/CLI là một ý tưởng tốt hơn nhiều. –
làm thế nào điều này có thể là câu trả lời ?! –
Thư viện C++ "tinh khiết" sẽ có tên của nó được trình biên dịch cắt xén, vì vậy sẽ rất khó để có được khai báo P/Invoke chính xác. Và phương thức C nhận được dấu gạch dưới ở đầu, có thể không có trong C++. Và phương pháp C++ cần một ví dụ này làm tham số đầu tiên, bạn phải tự mình cung cấp.
Tôi nghĩ rằng bạn cần bọc C++ API của bạn trong một loạt các phương pháp tương thích với C.
- 1. Thư viện XSLT thuần túy
- 2. Cần một thư viện đa năng, thuần túy C
- 3. Thư viện Python thuần túy để tạo Identicons?
- 4. Thư viện tầm nhìn máy tính java thuần túy mã nguồn mở tốt nhất là gì?
- 5. Tại sao numCapabilities là một hàm thuần túy?
- 6. Chức năng thuần túy trong C++ 11
- 7. Chức năng thuần túy trong C#
- 8. Trình điều khiển Java SQLiteJDBC thuần túy có thực sự thuần túy không?
- 9. Thay thế BOOST_FOREACH bằng tùy chọn "thuần túy" C++ 11?
- 10. Học JavaCV bằng Java thuần túy
- 11. Chức năng ảo thuần túy nằm ở đâu trong C++?
- 12. Chức năng ảo thuần túy được gọi là lỗi
- 13. Chức năng ảo thuần túy được gọi là
- 14. Làm thế nào để thay thế chuỗi regex trong C thuần túy?
- 15. Chuyển đổi từ Kanji sang romaji bằng Java thuần túy?
- 16. Pure Ruby (not C) Thư viện Markdown
- 17. "= 0;" là gì? làm gì khi khai báo các hàm ảo thuần túy trong C++?
- 18. C++ tạm thời - "phương pháp ảo thuần túy được gọi là"
- 19. Gửi thư bằng cả HTML và Văn bản thuần túy trong .net
- 20. Cách tạo cửa sổ winapi thuần túy
- 21. Rsync: thực hiện Ruby thuần túy?
- 22. Biến NSAttributedString thành văn bản thuần túy
- 23. Triển khai DOM trong javascript thuần túy?
- 24. Phiên bản byte thuần túy của strstr?
- 25. .NET ASMX - Trả lại JSON thuần túy?
- 26. Xóa tất cả nội dung bằng JS thuần túy
- 27. Mã hóa WBXML thuần túy cho PHP?
- 28. Chụp R6025 cuộc gọi ảo thuần túy
- 29. Thực hiện lại Java thuần túy của GraphViz?
- 30. Tránh IORef trong mã thuần túy
Hãy xem bài viết CodeProject này: http://www.codeproject.com/KB/mcpp/usingcppdll.aspx – dalle