如何在北太天元中用bex编译包含Matlab接口调用的C代码

标签: 问题反馈——使用问题

北太天元社区支持 2026-01-30 11:49:56

现有的C代码里调用的是matlab的接口,需要改为调用北太天元的接口,如:

#include "bex/bex.h"

void bexFunction()

bxArray

……

方法如下


1.新建<mex.h>头文件,与要编译的C文件放同一个文件夹中

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define mxIsNaN    isnan

#define mxCreateDoubleMatrix          bxCreateDoubleMatrix
#define mxCreateLogicalMatrix         bxCreateLogicalMatrix
#define mxCreateStructMatrix          bxCreateStructMatrix
#define mxCreateCellMatrix            bxCreateCellMatrix
#define mxCreateSparse                bxCreateSparse
#define mxCreateString                bxCreateString
#define mxCreateCharMatrixFromStrings bxCreateCharMatrixFromStrings
#define mxCreateDoubleScalar          bxCreateDoubleScalar

#define mxAddField bxAddField
#define mxSetField bxSetField
#define mxSetCell  bxSetCell

#define mxGetNumberOfElements  bxGetNumberOfElements
#define mxGetNumberOfFields    bxGetNumberOfFields
#define mxGetDoubles           bxGetDoubles
#define mxGetLogicals          bxGetLogicals
#define mxGetField             bxGetField
#define mxGetFieldNameByNumber bxGetFieldNameByNumber
#define mxGetCell              bxGetCell

#define mxGetN     bxGetN
#define mxGetM     bxGetM
#define mxGetNzmax bxGetNzmax
#define mxGetJc    bxGetJc
#define mxGetIr    bxGetIr
#define mxGetPr    bxGetPr

#define mexErrMsgTxt    bxErrMsgTxt

#ifdef _WIN32
#define mystrcmp _stricmp
#else
#include <strings.h>
#define mystrcmp strcasecmp
#endif


2.在北太天元命令窗口输入“bex 文件名.c”,编译对应的C文件。

编译后会出现以下对话并在文件夹下生成“文件名.bexw64”等文件,例如

image.png


注意:

1)需安装C语言编译器,建议 VS 2019。

2)编译过程中出现乱码,是因为系统显示字体的原因。在系统“语言和区域”设置中,打开“使用Unicode UTF-8提供全球语言支持”选项,如下图所示,再次运行bex 文件名.c,显示正常。

image (1).png

image (2).png

回复

回复

重置 提交