2017-04-26 3 views
6

सेट मैं से उन्नत करने के लिए कोशिश कर रहा हूँ: बड़ा घूँट 2.0.11 और अजगर 2.7.12 बड़ा घूँट 3.0.12 और अजगर 3.6, लेकिन मैं करने के लिएSystemError: <निर्मित समारोह xxx_iterator> एक परिणाम लौटे एक त्रुटि के साथ

SystemError: <built-in function xxx_iterator> returned a result with an error set 

उदाहरण के लिए, यहां तक ​​कि सबसे सरल यात्रा में विफल रहता है:

Traceback (most recent call last): 
File "testRender.py", line 459, in testRender 
    for v in vertices: 
File "ncore.py", line 90833, in __iter__ 
    return self.iterator() 
File "ncore.py", line 90830, in iterator 
    return _ncore.Vertices_iterator(self) 
SystemError: <built-in function Vertices_iterator> returned a result with an error set 

कोई भी विचार जब मैं किसी भी इटरेटर (स्वतः% टेम्पलेट का उपयोग कर उत्पन्न किया था) पर परीक्षण चलाने के निम्न अपवाद मिल सकता है?

फिर, यह सब बड़ा घूँट 2.0.11 और अजगर 2.7.12 .... के साथ महान काम कर रहा था

संपादित करें: जोड़ना सरल उदाहरण:

यह किसी भी% टेम्पलेट उत्पन्न इटरेटर हो सकता है

: जब इस सरल कोड का उपयोग कर

%template(Ints) std::list<int>; 

असफल हो जायेगी:, इसलिए, उदाहरण के लिए, इस टेम्पलेट, मैं फाइल में परिभाषित 903,210 संदेश इस के समान के साथ

:

Traceback (most recent call last): 
File "testRender.py", line 459, in testRender 
    for i in intsList: 
File "ncore.py", line 90833, in __iter__ 
    return self.iterator() 
File "ncore.py", line 90830, in iterator 
    return _ncore.Ints_iterator(self) 
SystemError: <built-in function Ints_iterator> returned a result with an error set 
+0

'के लिए Vertices_iterator' यह किसी भी मदद देने के लिए असंभव है स्रोत कोड जानने के बिना। – MSeifert

+0

अच्छा बिंदु। मैंने कुछ सरल कोड दिखाने के लिए सवाल संपादित किया। यह सभी% टेम्पलेट-जेनरेट कोड पर होता है, इसलिए सबसे सरल टेम्पलेट्स भी विफल हो जाते हैं। –

+0

FYI, ऐसा लगता है कि यह प्रतिबद्धता (https://github.com/swig/swig/pull/560/files) ने इसी तरह की समस्या को हल करने का प्रयास किया ... –

उत्तर

0

कि अजीब बात है, बस खरोंच से सब कुछ फिर कंपाइल। तब मैं अपने सरल उदाहरण का परीक्षण किया (अगर सही ढंग से समझ में आ):

Mytest.i:

%module mytest                        
%{                          
    #include <list> 
    using namespace std;                      
%}                          

%include "std_list.i" 
namespace std {                       
    %template(Ints) list<int>;               
} 

संकलित कदम:

swig -Wall -c++ -python -py3 -o mytest_wrap.cpp mytest.i 
g++ -c -g -ansi mytest_wrap.cpp -I/usr/local/include/python3.6m/ -fPIC -o mytest_wrap.o 
g++ -g -ansi -o _mytest.so mytest_wrap.o -shared 

फिर, अजगर को mytest मॉड्यूल आयात करने के बाद, सब कुछ एक तरह काम करता है आकर्षण।

परीक्षण विन्यास:

  • dockerized Ubuntu16.04: अजगर 3.6.1, बड़ा घूँट 3.0.12, जी ++ 5.4।
  • dockerized Centos6: अजगर 3.6.1, बड़ा घूँट 3.0.12, जी ++ (4.9.2 और 4.4.7)
+0

परीक्षण के लिए धन्यवाद। मुझे जिक्र करना चाहिए कि हमने जी ++ 4.6 और जी ++ 4.9 के साथ सेंटोस 6 पर और विंडोज़ पर एमएसवीएस प्रो 2013 के साथ प्रयास किया। –

+0

@ डेवनविल्लियम्स मेरे लिए Centos6/g ++ 4.6 पर भी काम करता है। क्या यह सरल प्रस्तावित उदाहरण बिल्कुल वही समस्या उत्पन्न करता है?क्या कोई संकलन चेतावनी है? – pe3k

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