2010-06-22 14 views
7

मैंने हाल ही में मैकपोर्ट्स का उपयोग करके बूस्ट स्थापित किया है, सी ++ में कुछ पायथन एम्बेडिंग करने के इरादे से। मैं तो जाँच करने का फैसला किया है, तो मैं एक उदाहरण पायथन की वेबसाइट पर मिल के साथ सही ढंग Xcode कॉन्फ़िगर किया गया:बूस्ट। मैक ओएस एक्स पर पायथन: "टाइप एरर: विशेषता का नाम स्ट्रिंग होना चाहिए"

#include <boost/python.hpp> 

using namespace boost::python; 

int main(int argc, char ** argv) 
{ 
    try 
    { 
     Py_Initialize(); 

     object main_module(handle<>(borrowed(PyImport_AddModule("__main__")))); 

     object main_namespace = main_module.attr("__dict__"); 

     handle<> ignored(PyRun_String("print \"Hello, World\"", 
             Py_file_input, 
             main_namespace.ptr(), 
             main_namespace.ptr())); 
    } 
    catch(error_already_set) 
    { 
     PyErr_Print(); 
    } 
} 

यह सही ढंग से संकलित, लेकिन जब मैं इसे लॉन्च, कॉल attr के लिए(), एक अपवाद फेंकता है और जिसके परिणामस्वरूप त्रुटि संदेश "टाइप एरर: विशेषता का नाम स्ट्रिंग होना चाहिए, न कि 'str' '। जो प्लेसहोल्डर की तरह संदिग्ध लगता है।

मैंने इसे Google पर देखा, लेकिन कोई भाग्य नहीं।

मैं तेंदुए पर बूस्ट v1.39, पायथन 2.5 और जीसीसी 4.0 का उपयोग करता हूं।

+0

यह कहना मुश्किल है कि क्या गलत है, कोड काम करता है (जीत/लिन, py3, gcc/vs2005/10, बूस्ट 42/43) क्या आपने जांच की है कि ओएस का आपका संस्करण आधिकारिक तौर पर आपके द्वारा उपयोग की जाने वाली सभी चीज़ों द्वारा समर्थित है या नहीं? – pprzemek

+0

पायथन, बूस्ट और जीसीसी 4 सभी आधिकारिक तौर पर ओएस एक्स पर समर्थित हैं। हालांकि, यह कहना मुश्किल है कि Boost.Python विशेष रूप से है या नहीं। उनका दस्तावेज पुराना लगता है, और ऐसा लगता है कि यह ओएस एक्स 10.3 पर पायथन 2.3 और जीसीसी 3.3 के साथ काम करता है, लेकिन तेंदुए के बारे में कुछ भी नहीं। शायद यह समस्या है। मैं इस पर गौर करूंगा। –

उत्तर

1

आपका कोड निम्न कॉन्फ़िगरेशन के साथ मेरे लिए काम किया:

  • Snow Leopard
  • जीसीसी संस्करण 4.2.1 (। AppleInc निर्माण 5646)
  • बूस्ट 1.41.0 करने के लिए स्थापित/usr/स्थानीय/

    : बढ़ावा/1_41_0/
  • स्टॉक OSX अजगर 2,5

का उपयोग कर संकलित

जी ++- I/डेवलपर/एसडीके/मैकोज़क्स 10.6.sdk/सिस्टम/लाइब्रेरी/फ्रेमवर्क/पायथन.फ्रेमवर्क/संस्करण/2.6/शामिल/पायथन 2.6/-आई/यूएसआर/स्थानीय/बूस्ट/1_41_0/शामिल -एल/usr/local/boost/1_41_0/lib/-boost_python -L/usr/lib/python2.6/config -lpython2.6 test.cpp

+0

मैंने बूस्ट 1.42, जीसीसी 4.2 और पायथन 2.5 के साथ प्रयास किया; अभी भी काम नहीं करता है। मैंने अभी तक हिम तेंदुए के साथ इसका परीक्षण नहीं किया है ... –