1.问题描述
在通过C调用Python执行语句
plt.figure('Filter')
时候出现报错‘sys‘ has no attribute ‘argv‘
2.解决方案
argv是主函数的参数,可以通过接口PyAPI_FUNC(void) PySys_SetArgv(int, wchar_t **);
来解决这个问题。
但我们的主函数的参数是
int main(int argc, char *argv[])
需要将argv类型转化为宽字符类型才可使用。
可以用mbstowcs函数将char*类型转化为wchar_t*类型,这里提供char** 和char*的转化方式:
wchar_t **getWC(char **argv,int argc )
{
wchar_t **wc_argv=new wchar_t *[argc];
for(int i=0;i<argc;i++)
{
size_t csize=strlen(*(argv+i))+1;
(*(wc_argv+i))= new wchar_t[csize];
mbstowcs(*(wc_argv+i), *(argv+i), csize);
}
return wc_argv;
}
wchar_t *GetWC(const char *c)
{
const size_t cSize = strlen(c) + 1;
wchar_t* wc = new wchar_t[cSize];
mbstowcs(wc, c, cSize);