Mặc dù tôi hiểu nhiều hơn về việc ràng buộc ngôn ngữ là gì, nhưng tôi đang cố gắng để hiểu cách họ làm việc. Bất cứ ai có thể giải thích làm thế nào để bạn thực hiện một Java ràng buộc cho WinAPI, ví dụ?Làm thế nào để bạn thực hiện một ràng buộc ngôn ngữ?
Trả lời
Bạn sẽ tìm thấy kết quả tốt hơn nhiều nếu bạn tìm kiếm Giao diện chức năng nước ngoài hoặc FFI. FFI là những gì cho phép bạn gọi các hàm được viết bằng một ngôn ngữ khác, ví dụ: các ngôn ngữ nước ngoài. Các ngôn ngữ và thời gian hoạt động khác nhau có nhiều FFI khác nhau và bạn sẽ phải tìm hiểu từng cá nhân. Học một FFI cũng buộc bạn phải biết thêm một chút về nội dung của ngôn ngữ của bạn và thời gian chạy của nó hơn là bạn thường sử dụng. Một số FFI giúp bạn viết mã bằng ngôn ngữ đích, như Haskell (trong đó mã FFI phải được viết bằng Haskell), và một số khác làm cho bạn viết mã bằng ngôn ngữ nguồn, như Python (trong đó mã FFI phải được viết bằng C).
Một số ngôn ngữ nhất định không sử dụng thuật ngữ FFI (mặc dù sẽ tốt nếu như chúng đã làm). Đối với Java, nó được gọi là Java Native Interface, hoặc JNI.
Ngôn ngữ (thường) đã xác định cú pháp để gọi mã "gốc". Vì vậy, nếu bạn có thư viện xuất phương thức foo()
, việc đặt giá thầu có nghĩa là bạn sẽ tạo, trong ví dụ của bạn, lớp Java với phương thức foo()
. Bằng cách đó, bạn có thể gọi MyBinding.foo()
từ phần còn lại của mã, nó sẽ không tạo sự khác biệt cho dù đó là phương pháp Java thuần túy hay mã C đã biên dịch.
Một lần nữa đối với Java, bạn có thể muốn xem tài liệu JNI. Các ngôn ngữ khác có cơ chế tương tự. Có các công cụ như SIP sẽ lấy các tệp tiêu đề C (++) và tạo ra các ràng buộc Python cho nó. Tôi đoán các ngôn ngữ khác cũng có thể có các công cụ tương tự.
- 1. Gtk + vs ràng buộc ngôn ngữ Qt
- 2. Làm thế nào để thực hiện một ngôn ngữ kịch bản vào một ứng dụng C?
- 3. làm thế nào để bạn loại bỏ một phiên bản ngôn ngữ của một mục sitecore?
- 4. Làm thế nào để bạn thực hiện một trợ giúp Handlebars nhận thức được ràng buộc Ember?
- 5. Làm thế nào để bạn rollback thay đổi được thực hiện cho một DataGridView bị ràng buộc?
- 6. Làm cách nào để thực hiện Ràng buộc ràng buộc DependencyProperty value coercion?
- 7. Làm thế nào để bạn thực hiện các phương thức compareTo một cách rõ ràng?
- 8. "Các ràng buộc để thực hiện giao diện rõ ràng ..."
- 9. Làm thế nào để bạn thực hiện một Assembler?
- 10. Làm thế nào để dịch từ một ngôn ngữ này sang ngôn ngữ khác trong Android
- 11. Làm thế nào để tôi thực hiện các ràng buộc dữ liệu WPF refactor an toàn?
- 12. Làm cách nào để triển khai ngôn ngữ có cùng ngôn ngữ nhanh hơn ngôn ngữ?
- 13. làm thế nào lisp được thực hiện trong ngôn ngữ lắp ráp?
- 14. Làm thế nào để phát hiện ngôn ngữ hệ thống trong delphi cho dự án đa ngôn ngữ?
- 15. Làm thế nào để bạn ràng buộc trẻ em của một mạng lưới vào danh sách?
- 16. Làm thế nào để bạn vượt qua tăng :: ràng buộc đối tượng với một chức năng?
- 17. Làm cách nào để buộc nhật thực sử dụng ngôn ngữ giao diện được chỉ định?
- 18. Có thể thực hiện một ngôn ngữ lập trình thứ hai bằng ngôn ngữ đó không?
- 19. Làm thế nào để Lisp cho phép bạn xác định lại chính ngôn ngữ đó?
- 20. Làm cách nào để hiển thị ngôn ngữ (ngôn ngữ) hiện tại ứng dụng Android?
- 21. Một số tối ưu hóa rõ ràng cho một máy ảo thực hiện một ngôn ngữ chức năng là gì?
- 22. Làm thế nào để Tìm một ngày hiện tại bằng ngôn ngữ c?
- 23. Làm cách nào để thực hiện việc tham gia trái trong Ngôn ngữ truy vấn Hibernate?
- 24. Làm thế nào để tạo và duy trì một dự án đa ngôn ngữ?
- 25. Làm cách nào để bạn thực hiện Điều khiển người dùng XAML tùy chỉnh có thể ràng buộc?
- 26. Bất kỳ ràng buộc ngôn ngữ thuần túy nào có sẵn cho Selenium2/WebDriver?
- 27. Các chi tiết thực hiện của các ngôn ngữ khai báo vốn có bắt buộc
- 28. Làm thế nào để tìm thấy thể hiện của một phương pháp ràng buộc trong Python?
- 29. Phát hiện ngôn ngữ
- 30. Làm thế nào để thực hiện một bản cập nhật sql liệu với động ràng buộc trong đường ray
Cảm ơn bạn. Tôi đã biết JNI, thực sự. Nhưng tôi không biết tôi nên tìm hiểu thêm ở đâu. – qeek