मेरे पास सी में लिखा गया मूल स्रोत कोड है जो मैं अपने एंड्रॉइड डिवाइस (नेक्सस 7) पर चलाना चाहता हूं। एंड्रॉइड एनडीके का उपयोग करके एंड्रॉइड पर देशी कोड चलाने पर मैंने पहले से ही बहुत सारे शोध और ऑनलाइन ट्यूटोरियल सफलतापूर्वक किए हैं। मुझे इस पर काफी कुछ ज्ञान मिला। हालांकि, मेरे द्वारा जो कोड है, वह मानक गणित पुस्तकालय की जटिल कार्यक्षमताओं का उपयोग करता है, जिसे जटिल.h में परिभाषित किया गया है। हालांकि एनडीके सी लाइब्रेरी जटिल कार्यक्षमताओं का समर्थन नहीं कर रही है। जब भी मैं इस परियोजना पर एक NDK-निर्माण करना मुझे मिलता है:एंड्रॉइड एनडीके के लिए मैं जटिल एचएच का उपयोग कैसे कर सकता हूं?
fatal error: complex.h: no such file or directory.
एक समाधान मैं हाथ-linux-gnueabi से मानक गणित पुस्तकालय (libm.a) हो रही है के बारे में सोचा के रूप में और मेरे देशी स्रोत के साथ लिंक।
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := StandardC
LOCAL_SRC_FILES := libc.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := mathLib
LOCAL_SRC_FILES := libm.a
LOCAL_STATIC_LIBRARIES := StandardC
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := ComplexOperations
LOCAL_SRC_FILES := libComplexOperations.a
LOCAL_STATIC_LIBRARIES := mathLib
LOCAL_C_INCLUDES += /usr/arm-linux-gnueabi/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := MySource
LOCAL_CFLAGS += -std=c99
LOCAL_SRC_FILES := com_samuel_test_ComplexOperationsLib.c
LOCAL_C_INCLUDES += /usr/arm-linux-gnueabi/include
LOCAL_STATIC_LIBRARIES := ComplexOperations
include $(BUILD_SHARED_LIBRARY)
मैं भी libm यह जरूरत के रूप में हाथ-linux-gnueabi-जीसीसी के libc से जोड़ने के लिए किया था: यहाँ मेरी Android.mk है। "कॉम्प्लेक्सऑपरेशंस" मॉड्यूल को संकलक फ्लैग-मार्च = armv7-a के साथ arm-linux-gnueabi-gcc का उपयोग करके स्थिर रूप से संकलित किया गया था। यह पुस्तकालय जटिल.h का उपयोग करता है। यह बिना किसी त्रुटि और चेतावनियों के बनाता है। लेकिन जब मैं आवेदन चलाने के लिए और फोन
System.loadLibrary("MySource");
मैं logcat पर इस त्रुटि मिलती है:
E/dalvikvm(3932): dlopen("/data/app-lib/com.samuel.test-1/libMySource.so") failed: Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol ".LANCHOR2" referenced by "libMySource.so"...
इस त्रुटि एक UnsatisfiedLinkError अपवाद फेंक दिया जाता है जो यदि संभाला नहीं क्रैश करने का आवेदन का कारण बनता है पर।
क्या कोई मेरी मदद कर सकता है !! मैंने पहले ही इसे अपने लिए बाहर निकालने की कोशिश की है !! :(
एंड्रॉइड गंभीरता से 'complex.h' नहीं है? –