2010-09-22 13 views
7

क्या हेडर फ़ाइल से जावा (+ यदि आवश्यक हो तो जेएनआई समर्थन) उत्पन्न करने के लिए कोई अच्छा टूल है ताकि सी या सी ++ लाइब्रेरी का उपयोग किया जा सके। जाव के विपरीत की तरह। वास्तविक कार्यक्षमता सी/सी ++ में होगी, जावा कुछ उपयोगकर्ताओं के लिए शीर्ष पर केवल एक शिम होगा।सी/सी ++ हेडर को जावा

मैं जेएनआई पर कोई विशेषज्ञ नहीं हूं लेकिन जहां तक ​​मैं देख सकता हूं कि जावा आपको इसे आगे करने के लिए मजबूर करता है। यह आपको जेएनआई-आईएमएस को सी कोड में अनावश्यक रूप से घुसने के लिए मजबूर करता है जबतक कि आप एक रूपांतरण परत स्वयं नहीं लिखते। और हाथ से एक रूपांतरण परत लिखना मूल रूप से समय की बर्बादी है, क्योंकि सभी जानकारी हेडर फ़ाइल में शुरू होने के लिए है।

उत्तर

3

सी के लिए, आप उपयोग कर सकते हैं JNA। आपको जावा में फ़ंक्शन हस्ताक्षर को अनावश्यक रूप से घोषित करना होगा, लेकिन किसी भी गोंद कोड को लिखना नहीं है। जेएनए का उपयोग करना बहुत आसान है।

सी या सी ++ के लिए, आप SWIG का उपयोग कर सकते हैं। SWIG उपयोग करने के लिए थोड़ा अधिक जटिल है, लेकिन स्वचालित रूप से सी ++ कक्षाओं के लिए जावा रैपर उत्पन्न करता है। हम इसका आनंद ले रहे हैं।

+0

धन्यवाद। दोनों के लिए दस्तावेज़ों के माध्यम से पढ़ने के बाद। एसडब्ल्यूआईजी ऐसा लगता है कि शायद यह समाधान है जिसका उपयोग करने की ज़रूरत है। – idij

2

लग रहा है बड़ा घूँट की तरह जावा के साथ काम करता है: http://www.swig.org/Doc2.0/Java.html

हो सकता है कि यह बिल्कुल आप जो खोज रहे हैं, हालांकि जब से तुम बड़ा घूँट निर्देशों को जोड़ने के लिए की क्या ज़रूरत है, ...

+0

एसडआईजी अब संस्करण 2 पर है। आपका लिंक 1.3 है। –

+0

ओह, बस Google ने मुझे दिया था के साथ चला गया। फिक्स्ड। –

3

JNAerator ठीक करता है: इसे पढ़ता C/C++/ObjectiveC हेडर और जावा बाइंडिंग कि BridJ (C/C++), JNA (सी केवल) या Rococoa (ObjectiveC, का उपयोग करता है JNA) पर भरोसा करते हैं आउटपुट।

संबंधित मुद्दे