2015-09-01 4 views
19

मैं सफलतापूर्वक compiled spidermonkey (विंडोज़ पर), मैं अब इसके खिलाफ कैसे लिंक कर सकता हूं (embed it)?स्पाइडरमोन्की के साथ एक सी ++ प्रोग्राम को जोड़ना?

js-config ठीक से स्थापित नहीं है, और मुझे this workaround समझ में नहीं आता है।

स्थैतिक पुस्तकालय से लिंक करना आसान होना चाहिए, लेकिन मुझे यह भी नहीं पता कि यह कौन सी फ़ाइल है। में dist/sdk/lib और nspr4.lib, plc4.lib, plds4.lib में mozglue.lib, mozjs-43a1.lib, nspr4.lib, plc4.lib, plds4.lib है।

अद्यतन

js-config क्योंकि मैं this problem था काम कर रहा था (विंडोज/यूनिक्स न्यू लाइन पात्रों समस्या के कारण -bash: '\r': command not found, मैं dos2unix js-config भाग गया और मैं इसे चला सकते हैं)।

हालांकि, निर्गम (खिड़कियों पर) मदद नहीं करता है:

:

$ ./js-config --cflags -std=gnu++0x -include /usr/local/include/mozjs-43a1/js/RequiredDefines.h -I/usr/local/include/mozjs-43a1 -Ic:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/include/nspr

$ ./js-config --libs ${libdir}/${JS_LIBRARY_NAME}.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/nspr4.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/plc4.lib c:/Users/Yvain/Documents/mozilla-central/js/src/build_OPT.OBJ/dist/lib/plds4.lib kernel32.lib user32.lib gdi32.lib winmm.lib wsock32.lib advapi32.lib psapi.lib

नोट्स

मैं संकलित करने के लिए निम्न आदेश का इस्तेमाल किया

g++ -std=c++11 -I<objdir>/dist/include -L<objdir>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -lpthread -ldl 

मुझे पता है कि यह संकलित करने का सही तरीका नहीं है क्योंकि उन पुस्तकालयों <objdir>/dist/lib में नहीं हैं। यह रिटर्न निम्न त्रुटियों:

[...]/jscpucfg.h:121:3: erreur: 
#error "Cannot determine endianness of your platform. Please add support to jscpucfg.h." 
[...] 
erreur: ‘JS_EvaluateScript’ was not declared in this scope 

यह सवाल कुछ ध्यान आकर्षित करने लगता है। ध्यान दें कि मैंने same question for V8 से पूछा था।

+0

क्या आप अपना स्रोत गिट या कुछ और प्रदान कर सकते हैं? क्या यह एंडियन मैनुअल को '-mbig-endian' या' -mlittle-endian' – Alex44

+1

के साथ सेट करने में मदद करता है आपको विंडोज आर्किटेक्चर और लक्ष्य प्रोसेसर को परिभाषित करना चाहिए। कंपाइलर विकल्पों के रूप में -D_WIN64 और -D_M_X64 जोड़ना चाहिए। – Vink

+0

शायद, मेरी समस्या यह है कि मुझे नहीं पता कि मुझे किस लिंक से लिंक करना चाहिए। –

उत्तर

3

सिगविन परियोजनाओं में स्पाइडरमनी का उपयोग करने का आसान तरीका (आपके कुछ आउटपुट से पता चलता है कि आप सिगविन का उपयोग कर रहे हैं) सिग्विन के लिए उपलब्ध libmozjs185 पैकेज का उपयोग करना है। मेरे परियोजना थोड़ा जटिल है, लेकिन एक makefile कुछ इस तरह दिखेगा:

CFLAGS += -g -I/usr/include/js -DXP_UNIX 
CXXFLAGS += -g -I/usr/include/js -DXP_UNIX 
JSLINK=-lmozjs185 

objs = <your .o files> 

<your app>: $(objs) 
    g++ -g -o <your app> $(objs) \ 
    $(JSLINK) \ 
    $(NULL) 

यदि आपका ऐप्लिकेशन केवल 'सी' कोड परिवर्तन जीसीसी के लिए ऊपर जी ++ है। मेरे पास mozjs185 के अलावा और अधिक पुस्तकालय हैं और मैंने उन्हें $ (NULL) से आगे रखा है।

3

के आसपास काम के पीछे विचार यह js-config --libs चलाने के लिए और JSAPI_LD_FLAGS में परिणाम डाल दिया, संभवतः डार्विन पर चीजों को फ़िल्टर, और फिर अपने LDFLAGS को JSAPI_LD_FLAGS संलग्न ताकि आप सही पुस्तकालयों लिंक कर सकते हैं।

तो अपने पुस्तकालय प्रश्न के लिए, जवाब पाने के js-config बनाया और फिर --libs

के साथ इसी तरह चलाने के लिए, आप CFLAGS और आउटपुट आप पहले से ही जरूरत का एक संयोजन का उपयोग कर अपने CFLAGS बनाने होता है js-config --cflags का। यह कुछ ऐसा है जो आप पहले से ही अन्य पुस्तकालयों के लिए निफ्टी पीकेजी-कॉन्फ़िगरेशन उपयोगिता के साथ कर सकते हैं।

यह एंडियननेस समस्या का समाधान नहीं करता है। आप कॉन्फ़िगर स्क्रिप्ट क्यों नहीं चलाते?

+0

क्या आपके पास कोई विकल्प है? –

+0

मेरे अनुभव ने मुझे कॉन्फ़िगरेशन चलाने के लिए कोई विकल्प नहीं सिखाया है जहां स्पाइडरमॉन्की का संबंध है। सिग्विन पर मुझे एक पूर्वनिर्धारित पैकेज मिलता है और यह मुझे उपयुक्त बनाता है। बहुत समय पहले मैंने एमएसडीईवी के साथ एक स्रोत टैरबॉल का इस्तेमाल किया लेकिन मुझे पूरा यकीन है कि मैंने उस मामले में स्पष्ट रूप से निर्देशों का पालन किया था। –

+0

ठीक है, मैंने अपने जेएस-कॉन्फ़िगरेशन समस्या के बारे में अधिक जानकारी देने के लिए अपना प्रश्न संपादित किया। क्या यह इस जवाब का विस्तार करने में मदद करता है? –

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