Python(PyQt5)如何在win10上使用SIP包装器进行C ++(Qt5)?

时间:2018-04-01 17:18:43

标签: python c++ python-sip

我尝试使用SIP包装器C ++ for Python,但它失败了。我怎么能解决它?

我的软件'版本:
- QT 5.9.1 MSVC2015
- PYQT 5.9.1
- PYTHON 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"),python告诉我错误:

len(): argument 1 has unexpected type 'str'  

我不知道为什么......

--------------------------更新于2018.04.03 ---------------- -----------

今天,我试试foo.len("123".encode('gb2312')),这是对的! 但我不知道为什么..
我尝试按utf8编译foo.dll,foo.lib,但错误相同。

0 个答案:

没有答案