关于csim软件中的一些错误整理

程序在编译时出现错误

错误使用 mex
  正在创建库 mibayes.lib 和对象 mibayes.exp
mibayes.obj : error LNK2019: 无法解析的外部符号 mxCreateScalarDouble,函数 writeDistToMxStruct 中引用了该符号
mibayes.mexw64 : fatal error LNK1120: 1 个无法解析的外部命令

出错 condmex (第 16 行)
  eval(cmd);

出错 install (第 5 行)
condmex( 'mibayes', 'mutual_information', 'mex -O mibayes.c mi_and_bayes.c' );

出错 install (第 19 行)
      install;

解决方案

找到路径\lsm\utilities\mutual_information中的mibayes.c文件对下面语句进行修改

void writeDistToMxStruct(mxArray **Tables, CountDist *D) {

  mxArray *UX,*NX;
  mxArray *UY,*NY;
  mxArray *NXY;

  *Tables = mxCreateStructMatrix(1, 1, nTablesFields, tablesFields);

  if ( D->handle > -1 ) 
//     mxSetField(*Tables,0,"handle",mxCreateScalarDouble(D->handle));  此处进行修改
      mxSetField(*Tables,0,"handle",mxCreateDoubleScalar(D->handle));
  else
    mxSetField(*Tables,0,"handle",mxCreateDoubleMatrix(0, 0, mxREAL));

  MTree2mxArray(D->Xmargin,&UX,&NX);
  mxSetField(*Tables, 0, "UX", UX);
  mxSetField(*Tables, 0, "NX", NX);

  MTree2mxArray(D->Ymargin,&UY,&NY);
  mxSetField(*Tables, 0, "UY", UY);
  mxSetField(*Tables, 0, "NY", NY);

  jointTree2mxArray(D,&NXY);
  mxSetField(*Tables, 0, "NXY", NXY);

}

原因

高matlab版本不再支持mxCreateScalarDouble,而被变为mxCreateDoubleScalar,因而要把所有的cpp源文件中出现mxCreateScalarDouble全部换掉。

mxCreateDoubleScalar
Create scalar, double-precision array initialized to the specified value

Note This function replaces mxCreateScalarDouble in version 6.5 of MATLAB. mxCreateScalarDouble is still supported in version 6.5, but may be removed in a future version.

如果有帮助请点个赞吧!

本人从事生物神经网络仿真工作,欢迎与我进行讨论!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值