2009-05-31 38 views

Trả lời

8

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.

+0

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

1

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ự.

Các vấn đề liên quan