Subject: | Could not find a typemap for C type |
Hello Steffen,
my poor experience with XSpp might be the culprit, but I'm having a hard time dealing with the following error:
./Build test
Processing XS typemap files...
Generating main XS file...
Could not find a typemap for C type 'std::vector< unsigned int >*'.
The following C types are mapped by the current typemap:
'AV *', 'Boolean', 'CV *', 'FILE *', 'FileHandle', 'HV *', 'I16', 'I32', 'I8', 'IV', 'InOutStream', 'InputStream', 'NV', 'OutputStream', 'PerlIO *', 'Result', 'STRLEN', 'SV *', 'SVREF', 'Sint16', 'Sint32', 'Sint64', 'SysRet', 'SysRetLong', 'Time_t *', 'U16', 'U32', 'U8', 'UV', 'Uint16', 'Uint32', 'Uint64', 'ZTable *', 'bool', 'bool_t', 'caddr_t', 'char', 'char *', 'char **', 'const Sint16', 'const Sint32', 'const Sint64', 'const Uint16', 'const Uint32', 'const Uint64', 'const bool', 'const char', 'const char *', 'const double', 'const float', 'const int', 'const long', 'const long double', 'const long int', 'const long long', 'const short', 'const short int', 'const signed char', 'const signed int', 'const signed long', 'const signed long int', 'const signed long long', 'const signed short', 'const signed short int', 'const size_t', 'const time_t', 'const unsigned', 'const unsigned char', 'const unsigned int', 'const unsigned long', 'const unsigned long int', 'const unsigned long long', 'const unsigned short', 'const unsigned short int', 'double', 'float', 'int', 'list<char * >', 'list<char * > *', 'list<double>', 'list<double> *', 'list<int>', 'list<int> *', 'list<std::string>', 'list<std::string> *', 'list<string>', 'list<string> *', 'list<unsigned int>', 'list<unsigned int> *', 'long', 'long double', 'long int', 'long long', 'short', 'short int', 'signed char', 'signed int', 'signed long', 'signed long int', 'signed long long', 'signed short', 'signed short int', 'size_t', 'ssize_t', 'std::list<char * >', 'std::list<char * > *', 'std::list<double>', 'std::list<double> *', 'std::list<int>', 'std::list<int> *', 'std::list<std::string>', 'std::list<std::string> *', 'std::list<string>', 'std::list<string> *', 'std::list<unsigned int>', 'std::list<unsigned int> *', 'std::string', 'std::string *', 'std::vector<char * >', 'std::vector<char * > *', 'std::vector<double>', 'std::vector<double> *', 'std::vector<int>', 'std::vector<int> *', 'std::vector<std::string>', 'std::vector<std::string> *', 'std::vector<unsigned int>', 'std::vector<unsigned int> *', 'time_t', 'unsigned', 'unsigned char', 'unsigned char *', 'unsigned int', 'unsigned long', 'unsigned long *', 'unsigned long int', 'unsigned long long', 'unsigned short', 'unsigned short int', 'void *', 'wchar_t', 'wchar_t *'
in /opt/local/bin/perl -MExtUtils::XSpp::Cmd -e xspp -- -t "/Users/al/Documents/Software/Slic3r/Slic3r/xs/xsp/typemap.xspt" "/Users/al/Documents/Software/Slic3r/Slic3r/xs/xsp/Object.xsp", line 14
The missing type is actually listed there, but without spaces inside the brackets < >. I can work around the issue by adding an entry for the spaced type in my.map, but while this works on OS X it fails on Windows (don't ask me why) with the error: "Multiple definition of ctype 'std::vector< unsigned int >*'"
It looks like the type is not normalized somewhere in the chain. Also note that I'm using the not-spaced version in my code, but since this happens to be inside the constructor of a class definition, something adds those spaces for me!
Thank you for your help...