2011-09-29 25 views
15

Tôi muốn gọi một phương thức C++ từ Java. Tôi đọc về JNI, nhưng tôi không nhận được làm thế nào để có được tất cả các tập tin thư viện và nơi tôi nên giữ nó để chạy chương trình từ dòng lệnh.Làm thế nào để gọi C++ từ Java?

Có cách nào để gọi một phương thức C++ từ Eclipse, vì tôi đang sử dụng nó để chạy các lớp Java.

+0

Hãy xem chủ đề này - http://stackoverflow.com/questions/7212982/jni-unable-to-fix-this-error/7213943#7213943 – adatapost

+0

chỉ cần làm theo bất kỳ hướng dẫn JNI và nhận được bắt đầu –

+0

Bản sao có thể có của [Cách sử dụng NDK? Bắt đầu với ứng dụng 'hello world'] (http://stackoverflow.com/questions/4777935/how-to-use-ndk-starting-with-hello-world-app) –

Trả lời

5

Nếu JNI quá phức tạp, bạn có thể xem JNA. Trong trường hợp đầu tiên, bạn phải tạo mã trình bao bọc gốc (trong C hoặc C++) để nối mã Java và native (C++/C/...). Trong trường hợp thứ hai, nó được thực hiện trong thời gian chạy (vì vậy bạn chỉ cần mã Java + config).

+0

"JNI" là câu trả lời tiêu chuẩn. Nhưng nếu JNA đáp ứng nhu cầu của bạn - mát mẻ! @Fernando Miguelez: Đề xuất tuyệt vời! Cảm ơn bạn đã chia sẻ! Đây là một liên kết khác: http://www.javaworld.com/javaworld/jw-02-2008/jw-02-opensourcejava-jna.html – paulsm4

6

Trong khi tôi đã sử dụng cầu nối JNI-C++ trong quá khứ (chỉ một chút mặc dù) - nó có thể là một chút xấu xí. Bạn có thể muốn xem xét sử dụng SWIG để giúp bạn tạo ra tất cả các mã tấm nồi hơi lộn xộn.

2

Tôi đã sử dụng JNA trước đây cho các giao diện đơn giản và nó đủ đơn giản và thanh lịch. Đó là thông báo mặc dù, rằng nếu có một giao diện phức tạp thì tốt hơn là sử dụng SWIG.

Có một số câu trả lời hay để so sánh SWIG với JNI và JNA. Đó là một lúc kể từ khi câu hỏi được hỏi mặc dù.

SWIG vs JNI and JNA

1

JNA có thể được sử dụng thay cho JNI.

Tất cả bạn cần là tải JNA jar (https://github.com/java-native-access/jna#download) nào cần được đưa vào dự án java của bạn.

Bạn cần cung cấp vị trí của thư viện C++ trong thuộc tính dự án của mình.

  • dự án Nhấp chuột phải
  • Run
  • Trong tùy chọn VM bao gồm này -Djava.library.path = "C: của bạn vị trí dll ".

Truy cập trang web này để biết ví dụ cũng có mã nguồn cho dự án Java và C++ để biết cách hoạt động của tính năng này. (http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads)

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