C调用Python ‘sys‘ has no attribute ‘argv‘报错

本文介绍了在C语言调用Python时遇到'sys'模块没有'argv'属性的问题及解决方案。通过使用PySys_SetArgv接口设置参数,并利用mbstowcs函数将char*转换为wchar_t*以适配接口要求。
摘要由CSDN通过智能技术生成

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);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值