2010-09-22 27 views
7

Có công cụ nào tốt để tạo java (hỗ trợ JNI nếu cần) từ một tệp tiêu đề sao cho thư viện C hoặc C++ có thể được sử dụng như là. Loại đảo ngược của javah. Các chức năng thực sự sẽ có trong C/C++, Java sẽ chỉ là một shim trên đầu trang cho một số người dùng nhất định.Đầu đề C/C++ vào java

Tôi không có chuyên gia về JNI nhưng theo như tôi có thể thấy Javah buộc bạn phải làm điều này trở lại phía trước. Nó buộc bạn phải có JNI-isms thâm nhập không cần thiết vào mã C trừ khi bạn tự viết một lớp chuyển đổi. Và viết một lớp chuyển đổi bằng tay về cơ bản là một sự lãng phí thời gian, vì tất cả các thông tin có trong tệp tiêu đề để bắt đầu.

Trả lời

3

Đối với C, bạn có thể sử dụng JNA. Bạn phải khai báo chữ ký chức năng thừa trong Java, nhưng không phải viết bất kỳ mã keo nào. JNA rất dễ sử dụng.

Đối với C hoặc C++, bạn có thể sử dụng SWIG. SWIG phức tạp hơn một chút để sử dụng, nhưng tự động tạo các trình bao bọc Java cho các lớp C++. Tôi đang thưởng thức nó.

+0

Cảm ơn. Sau khi đọc qua các tài liệu cho cả hai. SWIG trông giống như nó có lẽ là giải pháp tôi cần phải sử dụng. – idij

2

Hình như SWIG làm việc với Java: http://www.swig.org/Doc2.0/Java.html

Có lẽ đây không phải là chính xác những gì bạn đang tìm kiếm, tuy nhiên, vì bạn phải thêm chỉ thị SWIG ...

+0

SWIG hiện đang ở phiên bản 2. Liên kết của bạn là 1.3. –

+0

Rất tiếc, chỉ cần đi với những gì google đã cho tôi. Đã sửa. –

3

JNAerator thực hiện chính xác: nó đọc tiêu đề C/C++/ObjectiveC và đầu ra Các liên kết Java dựa trên BridJ (C/C++), JNA (C only) hoặc Rococoa (ObjectiveC, sử dụng JNA).

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