我正在使用 pybindgen 创建 python 和 c++ 之间的链接代码。或者至少如果我可以让它与我的代码一起工作,我会这样做。python 文件在运行时会产生以下错误。我可以满足 pybindgen 或解决这些问题的任何方式都将非常有帮助。
pygccxml.parser.source_reader.gccxml_runtime_error_t: Error occured while running GCC-XML: In file included from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstdio:44,
from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/fstream:43,
from C:\Users\Richard\workspace\PyBindGen\src\/tokeniser.hpp:13,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:11,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdio.h:191: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
... [some recuring size_t errors removed because size too big]
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdio.h:413: error: expected constructor, destructor, or type conversion before 'fwrite'
In file included from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/fstream:43,
from C:\Users\Richard\workspace\PyBindGen\src\/tokeniser.hpp:13,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:11,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstdio:109: error: '::fread' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstdio:115: error: '::fwrite' has not been declared
In file included from C:\Users\Richard\workspace\PyBindGen\src\/tokeniser.hpp:14,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:11,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:345: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:345: error: expected constructor, destructor, or type conversion before 'wcstombs'
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:348: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:348: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:348: error: 'size_t' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:349: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:349: error: expected constructor, destructor, or type conversion before 'mbstowcs'
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:350: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:350: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:350: error: 'size_t' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:355: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:355: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:355: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:355: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:355: error: initializer expression list treated as compound expression
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:356: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/stdlib.h:356: error: reference to 'size_t' is ambiguous
... [some recuring size_t errors removed because size too big]
In file included from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstring:44,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:32,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/string.h:36: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/string.h:36: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/string.h:36: error: 'size_t' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/string.h:37: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
... [some recuring size_t errors removed because size too big]
In file included from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:32,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstring:86: error: '::strcspn' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstring:88: error: '::strlen' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstring:92: error: '::strspn' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstring:94: error: '::strxfrm' has not been declared
In file included from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/ctime:44,
from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/bits/locale_facets_nonio.h:39,
from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/locale:43,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:47,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/time.h:124: error: reference to 'size_t' is ambiguous
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/stddef.h:212: error: candidates are: typedef unsigned int size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/mingw32/bits/c++config.h:155: error: typedef unsigned int std::size_t
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/../../../../include/time.h:124: error: expected constructor, destructor, or type conversion before 'strftime'
In file included from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/bits/locale_facets_nonio.h:39,
from c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/locale:43,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:47,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/ctime:74: error: '::strftime' has not been declared
In file included from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/assert.hpp:81,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/array.hpp:44,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:146,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstdlib:122: error: '::mbstowcs' has not been declared
c:/mingw/bin/../lib/gcc/mingw32/4.6.1/include/c++/cstdlib:134: error: '::wcstombs' has not been declared
In file included from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/range/end.hpp:24,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/range/functions.hpp:19,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/range/iterator_range_core.hpp:26,
from C:/Users/Richard/Desktop/code/boost_1_51_0/boost/lexical_cast.hpp:155,
from C:\Users\Richard\workspace\PyBindGen\src\/dataitem.hpp:9,
from C:\Users\Richard\workspace\PyBindGen\src\/includes.hpp:24,
from C:\Users\Richard\workspace\PyBindGen\src\file.hpp:9:
C:/Users/Richard/Desktop/code/boost_1_51_0/boost/range/detail/implementation_help.hpp: In function 'const char* boost::range_detail::str_end(const char*, const char*)':
C:/Users/Richard/Desktop/code/boost_1_51_0/boost/range/detail/implementation_help.hpp:37: error: 'strlen' was not declared in this scope
我的 .py 文件是
#! /usr/bin/env python
import sys
import os
import pybindgen
from pybindgen.typehandlers import base as typehandlers
from pybindgen import (ReturnValue, Parameter, Module, Function, FileCodeSink)
from pybindgen import (CppMethod, CppConstructor, CppClass, Enum)
from pybindgen.gccxmlparser import ModuleParser
from pybindgen.function import CustomFunctionWrapper
from pybindgen.cppmethod import CustomCppMethodWrapper
import generator_common
def my_module_gen():
out = FileCodeSink(sys.stdout)
pygen_file = open(sys.argv[2], "wt")
module_parser = ModuleParser('eyon', '::')
module_parser.enable_anonymous_containers = True
module = module_parser.parse([sys.argv[1]], includes=['"file.hpp"'], pygen_sink=FileCodeSink(pygen_file),
include_paths=["C:\\Users\\Richard\\Desktop\\code\\boost_1_51_0"])
pygen_file.close()
generator_common.customize_module(module)
module.generate(out)
def main():
if sys.argv[1] == '-d':
del sys.argv[1]
import pdb
pdb.set_trace()
my_module_gen()
else:
import os
if "PYBINDGEN_ENABLE_PROFILING" in os.environ:
try:
import cProfile as profile
except ImportError:
my_module_gen()
else:
print >> sys.stderr, "** running under profiler"
profile.run('my_module_gen()', 'foomodulegen-auto.pstat')
else:
my_module_gen()
if __name__ == '__main__':
main()