Я пытаюсь использовать обертку SIP C ++ для Python, но это не удалось. Как я могу соловья это?
Версия моего программного обеспечения:
— QT 5.9.1 MSVC2015
— PYQT 5.9.1
— ПИФОН 3.6.4
— SIP 4.19.8
//foo.h
#ifndef FOO_H
#define FOO_H
#if defined(FOO_LIBRARY)
#define FOOSHARED_EXPORT __declspec(dllexport)
#else
#define FOOSHARED_EXPORT __declspec(dllimport)
#endif
FOOSHARED_EXPORT int len(const char* str);
#endif //FOO_H
//foo.cpp
#include <string.h>
#include<foo.h>
int len(const char* str)
{
return strlen(str);
}
//foo.sip
%Module(name=foo)
%UnitCode
#include <foo.h>
%End
int len(const char* str);
Я использовал vs2015 craet foo.dll, foo.lib и использовал nmake (install) foo.pyd.
я пытаюсь import foo
, все нормально.
Но я привык foo.len("123")
Питон сказал мне ошибку:
len(): argument 1 has unexpected type 'str'
Я не знаю почему ..
————————— обновление на 2018.04.03 —————————
Сегодня попробую foo.len("123".encode('gb2312'))
, это верно!
Но я не знаю почему ..
Я пытаюсь скомпилировать foo.dll, foo.lib utf8
, но то же самое об ошибке.
Задача ещё не решена.
Других решений пока нет …