2012-10-14 9 views
6

मैं रूबी के लिए एक सी विस्तार पर काम कर रहा हूँ, लेकिन मैं IOBluetooth ढांचे से शीर्ष लेख शामिल करने की जरूरत है, विशेष रूप से:कोको हेडर लिंक करना सी विस्तार रूबी के लिए

#import <IOBluetooth/objc/IOBluetoothDeviceInquiry.h> 
#import <IOBluetooth/IOBluetoothUserLib.h> 

सब कुछ ठीक संकलित है, लेकिन क्रम में, विस्तार त्रुटियों:

path/to/file.rb:1:in `require_relative': dlopen(/path/to/extension.bundle, 9): 
Symbol not found: _OBJC_CLASS_$_IOBluetoothDeviceInquiry (LoadError) 

मैं काफी यकीन है कि यह ढांचा लिंक करने की प्रक्रिया में शामिल नहीं किया जा रहा से कोई लेना देना कुछ है हूँ, लेकिन मुझे यकीन है कि क्यों नहीं कर रहा हूँ। किसी भी मदद बहुत सराहना की जाएगी

extconf.rb:

# Loads mkmf which is used to make makefiles for Ruby extensions 
require 'mkmf' 

# Give it a name 
extension_name = 'bluetooth' 

dir_config(extension_name) 

create_makefile(extension_name, 'bluetooth') 

जनरेट किया MakeFile:http://paste.wilhall.com/25

अद्यतन: मैं Makefile संशोधित इतना है कि पुस्तकालय स्थिर लिंक करता है; अभी भी एक ही त्रुटि का सामना कर रहा है, लेकिन इस बार लिंक करते समय।

विचित्र रूप से, have_header मेरी extconf.rb फ़ाइल में इन हेडर फ़ाइलों को ठीक लगता है।

अद्यतन:

Process:   ruby [951] 
Path:   /usr/local/bin/ruby 
Identifier:  ruby 
Version:   0 
Code Type:  X86-64 (Native) 
Parent Process: bash [468] 
User ID:   501 

Date/Time:  2012-10-17 14:06:57.425 -0400 
OS Version:  Mac OS X 10.8.1 (12B19) 
Report Version: 10 

Crashed Thread: 0 Dispatch queue: com.apple.main-thread 

Exception Type: EXC_BAD_ACCESS (SIGABRT) 
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 

अगर मैं सही ढंग से याद, EXC_BAD_ACCESS (SIGABRT) अक्सर एक जीसी समस्या से संबंधित है: मैं प्रणाली लॉग फ़ाइलों से निम्नलिखित खींच लिया है? इसमें देखेंगे और परिणाम

+0

यह एक शानदार सवाल +1 –

उत्तर

1

यह बहुत आसान लगता है, इसलिए मैं बंद हो सकता हूं, लेकिन यह आपके द्वारा पोस्ट किए गए कार्यों से सही दिखता है। ऐसा लगता है कि समस्या हेडर नहीं है, लेकिन आप IOBluetooth ढांचे को स्वयं लिंक नहीं कर रहे हैं। क्या आप कहीं भी -framework IOBluetooth जैसे कुछ निर्दिष्ट कर रहे हैं?

+0

मैं क्षमा चाहता हूं, पोस्ट किए गए मेकफ़ाइल को एक ताजा जेनरेट किया गया है। मैंने इसे 'IOBluetooth' को ढांचे के रूप में शामिल करने के लिए संपादित किया। त्रुटि के नए हिस्से के लिए प्रश्न का अंतिम भाग देखें – WilHall

1

सुनिश्चित करें कि आप

-framework Foundation System/Library/Frameworks/IOBluetooth.framework/IOBluetooth 

शामिल अपने makefile में बनाओ। सुनिश्चित करें कि आपके पास सही निर्देशिका में ढांचा है। लेकिन यदि आप इसे संकलित कर सकते हैं, तो इसे लिंक करें, आपका IOBluetooth अब आपकी बाइनरी में दिखता है।

जिस तरह से आप पते 0x02 पर पॉइंटर तक पहुंचने का प्रयास कर रहे हैं, वही है जो दुर्घटना पैदा कर रहा है। मुझे यकीन नहीं है कि यह अब IOBluetooth से संबंधित है

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