Python cType和C++指针

2024-05-18 12:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

C++函数:

DLLENTRY int VTS_API
    SetParamValue( const char *paramName, void *paramValue ) //will return zero(0) in the case of an error
  {
    rtwCAPI_ModelMappingInfo* mmi = &(rtmGetDataMapInfo(PSA_StandAlone_M).mmi);
    int idx = getParamIdx( paramName );
    if (idx<0) {
      return 0;                        //Error
    }

    int retval = capi_ModifyModelParameter( mmi, idx, paramValue );
    if (retval == 1 ) {
      ParamUpdateConst();
    }

    return retval;
  }

以及我的Python代码:

^{pr2}$

退货

^{3}$

你知道什么能帮上忙吗? 我已经尝试了POINTERbyref(),但是我得到的是相同的输出


Tags: 函数apireturnifintretvalcharidx
1条回答
网友
1楼 · 发布于 2024-05-18 12:24:30

SetParamValue需要一个指针(void*c\u void\)作为2nd参数,但您传递的是一个int
该函数将其解释为一个指针(内存地址),当试图取消对它的引用(以获取其内容)时,它将segfault访问冲突),因为进程对该地址没有权限。在

要解决此问题,请将正确的参数传递给函数:

z = setParam(b"LDOGenSpdSetpoint", pointer(c_int(20)))

您可以在[Python 3]: ctypes - A foreign function library for Python上找到更多详细信息。在

相关问题 更多 >

    热门问题