2009-03-03 24 views

Trả lời

19

Bạn có thể thử hai điều này, tôi đã thấy thành công với cả hai.

http://jawinproject.sourceforge.net

Dự án tích hợp Java/Win32 (Jawin) được miễn phí, mã nguồn mở kiến ​​trúc cho interoperation giữa Java và các thành phần tiếp xúc qua của Microsoft Component Object Model (COM) hoặc thông qua Win32 Dynamic Liên kết Thư viện (DLL).

https://github.com/twall/jna/

JNA cung cấp các chương trình Java dễ dàng truy cập đến các thư viện chia sẻ nguồn gốc (DLL trên Windows) mà không cần viết bất cứ điều gì nhưng mã không Java JNI hoặc mã gốc là yêu cầu. Chức năng này là có thể so sánh với Nền tảng của Windows/Gọi và các dòng ctype của Python. Truy cập động là khi chạy mà không cần tạo mã.

JNA cho phép bạn gọi trực tiếp vào các hàm gốc bằng cách sử dụng lời gọi phương thức Java tự nhiên. Cuộc gọi Java trông giống như giống như trong mã gốc. Hầu hết các cuộc gọi không yêu cầu xử lý đặc biệt hoặc cấu hình ; không có bản mẫu hoặc mã được tạo.

Cũng đọc lên ở đây:

http://en.wikipedia.org/wiki/Java_Native_Interface

Java Native Interface (JNI) là một khuôn khổ lập trình cho phép Java mã chạy trong một Java Virtual Machine (JVM) để gọi và được gọi là 1 bởi ứng dụng gốc (chương trình cụ thể tới phần cứng và hệ điều hành nền tảng) và thư viện wr itten in các ngôn ngữ khác, chẳng hạn như C, C++ và lắp ráp.

http://en.wikipedia.org/wiki/Java_Native_Access

Java Native Access cung cấp các chương trình Java dễ dàng tiếp cận với nguồn gốc chia sẻ thư viện mà không sử dụng Java Native Interface. Thiết kế của JNA nhằm mục đích cung cấp quyền truy cập tự nhiên theo cách tự nhiên với nỗ lực tối thiểu. Không boilerplate hoặc mã keo được tạo ra là bắt buộc.

5

JNA là khá hay. Tôi chỉ là người mới bắt đầu và tôi thấy nó rất dễ dàng. Hoạt động không chỉ cho API Win32 mà còn cho hầu hết các DLL khác.

2

Jacob khá tốt ở phía COM (nhưng nó thực COM - như bạn viết trong C++ - nếu bạn đã quen thuộc với lập trình COM đúng, thì Gia-cốp là một snap để sử dụng)

+0

Không cố gắng nitpick, nhưng COM hiển thị dịch vụ thông qua giao diện ** C **. – IInspectable

1

Một tùy chọn khác là WinRun4J. Nó có một lớp ràng buộc bản địa nhằm mục đích tương thích với pinvoke.net (định dạng liên kết gốc được sử dụng trong chấm chấm). Xem examples để biết thêm thông tin. Một vài ngày đầu của nó nên YMMV.

(tiết lộ đầy đủ: tôi làm việc trên dự án).

Một tùy chọn khác là JFFI - điều này được sử dụng trong jruby và jython để tương tác với thư viện gốc.

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