2010-05-27 6 views
5

में काम करेगा, इसलिए, मैं अपने जावा प्रोग्राम में जीपीआईबी उपकरणों के साथ संवाद करने के लिए जेपीआईबी का उपयोग कर रहा हूं। हालांकि, मैं एक झटके में भाग गया है। 64 बिट ओएस पर नए सिस्टम बनाए गए हैं। हालांकि, jpib.dll फ़ाइल 32-बिट में लिखी गई है। मैं किसी भी तरह की कॉल के बारे में नहीं सोच सकता कि इसे वास्तव में 64-बिट निर्भर करने की आवश्यकता होगी।32-बिट। डीएल को लपेटने के तरीके तो यह 64-बिट ओएस

वास्तविक समस्या यह है कि जेपीआईबी परियोजना 2006 के सितंबर से अपडेट नहीं की गई है। मैंने स्रोतफोर्ज के माध्यम से देव को ईमेल करने का प्रयास किया है, लेकिन मुझे नहीं लगता कि मैं इसके साथ कहीं भी जाऊंगा।

क्या किसी को इसके आसपास किसी भी तरीके से पता है? या एएमडी -64 अनुपालन में .dll को पुन: संकलित करने के लिए कैसे (और मुझे बता सकता है) कैसे पता है?

+0

क्या 32-बिट देशी पुस्तकालयों का उपयोग करने वाले आपके एप्लिकेशन के साथ 32-बिट जेआरई को बस बंडल करना संभव है? और फिर अपने ऐप को बंडल जेआरई के साथ लॉन्च करें। फिर यह 64-बिट आर्किटेक्चर पर भी काम करेगा। – KJW

उत्तर

5

नोट: मुझे नहीं पता कि जेपीआईबी और जीपीआईबी क्या हैं।

यदि आप डीएलएल के रूप में उपयोग करना चाहते हैं, तो आपको उस एप्लिकेशन को लिखना होगा जो उस डीएलएल को गतिशील रूप से लिंक कर सकता है और किसी प्रकार के आईपीसी के माध्यम से आपके आवेदन के साथ संचार कर सकता है।

यदि आप उस डीएलएल का पुनर्निर्माण करना चाहते हैं, तो आपको स्रोत और इसकी सभी निर्भरताओं को प्राप्त करने और बिल्ड टूल्स इंस्टॉल करने की आवश्यकता होगी। यह बहुत कठिन नहीं होना चाहिए, हालांकि यदि आप एमएस विजुअल स्टूडियो स्थापित कर रहे हैं तो मुझे लगता है कि x64 सामान स्थापित करने के बारे में कुछ मिलचास की आवश्यकता है। यह आपके इंस्टॉल प्लेटफ़ॉर्म पर निर्भर हो सकता है, हालांकि; यदि आप x64 पर स्थापित कर रहे हैं तो शायद यह काम करेगा।

4

एक 32-बिट वीएम अभी भी 64-बिट एएमडी मंच और इंटेल ईएमटी 64 प्लेटफॉर्म पर काम करेगा।

हालांकि, यदि आप 64-बिट प्रक्रिया में लाइब्रेरी का उपयोग करना चाहते हैं, तो आप जावा की मदद के लिए उपयोग कर सकते हैं। समाधान 2 JVMs का उपयोग करता है - 32-बिट एक और 64-बिट एक - 64-बिट एक आपका मुख्य एप्लिकेशन होस्ट करता है। 32-बिट एक जेपीआईबी लाइब्रेरी होस्ट करता है। फिर आप उनके बीच पुल करने के लिए RMI का उपयोग करें। अधिक जानकारी में:

  • जेपीआईबी लाइब्रेरी में काफी छोटा एपीआई है। अनजाने में, यह सब कक्षाओं के रूप में लागू किया गया है। आप इंटरफेस को कार्यान्वित करके लाइब्रेरी को सारणी देते हैं जिसमें मुख्य ड्राइवर वर्ग के समान विधि हस्ताक्षर होते हैं।
  • जेपीआईबी कक्षाओं को सीधे कॉल करके इंटरफेस को कार्यान्वित करें। आप 32-बिट जेवीएम से आरएमआई के माध्यम से इस इंटरफेस का पर्दाफाश करने के लिए आरएमआई का उपयोग करते हैं।
  • अपने 64-बिट जेवीएम में आप 32-बिट वीएम से जेपीआईबी इंटरफ़ेस का उदाहरण प्राप्त करने के लिए आरएमआई का उपयोग करते हैं। अब आप उस इंटरफेस पर विधियों को कॉल कर सकते हैं जैसे कि वे स्थानीय थे, लेकिन उन्हें 32-बिट वीएम निष्पादन के लिए रिमोट कॉल के रूप में लागू किया गया।
0

आपको 32-बिट डीएलएल में एक 64-बिट रैपर लिखने में सक्षम होना चाहिए, और आपके जेएनआई कोड 32-बिट डीएलएल के बजाय 64-बिट रैपर को कॉल करें। थंकिंग एक काफी उन्नत और मंच-निर्भर सी/सी ++ विषय है।

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