编译C dll部署MATLAB代码时出现C2371错误
Error C2371 when compiling C dll deployment MATLAB code
我正在尝试使用VS2010与MATLAB 2007b编译C dll。我得到这个错误:
c:program filesmicrosoft visual studio 10.0vcincludeyvals.h(576): error C2371: 'char16_t' : redefinition; different basic types
c:program filesmatlabr2007bexternincludematrix.h(336) : see declaration of 'char16_t'
代码如下:
#include <FLOAT.H>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#include "..OpenCV_Lib.h"
//namespace mat{
#include "..MATCVcomm.h"
//}
//#include "matrix.h"
//using namespace mat;
#define Out plhs[0]
#define Outlist plhs[1]
#define Ref prhs[0]
#define Para prhs[1]
#define IMAGE_NUM prhs[2]
/*
Out:Cell Array m by n
m:size of input array m
n:number of member include the groupe + 1
first member of each cell if indicate n
ref:Input array
para:parametor of grouping shown below
[r num]
r:radius of groupe
num:The number of groups extracted by this function
(in case by that there are a great many groups)
IMAGE_NUM:Image Index List
*/
#include "groupe.h"
void mexFunction(
int nlhs, mxArray *plhs[],
int nrhs, const mxArray *prhs[]
)
{
double min = DBL_MAX;
int i, j;
if( nrhs < 2 ){
mexErrMsgTxt("groupe function requirs two input parametor for Matrix of point and [rad num]");
return;
}
int param = mxGetM( Para );
int Rn = mxGetN( Ref );
int Rm = mxGetM( Ref );
double * para = mxGetPr( Para );
double * pref = mxGetPr( Ref );
double rad = para[0];
int gnum;
if( param > 1 )
gnum = (int)(para[1]);
else
gnum = 0;
class memlist mem = groupe( pref, Rm, Rn, rad );
if( nrhs >= 3 ){
int imnn = mxGetM( IMAGE_NUM );
if( imnn != Rm ){
mexErrMsgTxt("Need that Number of ImageIndexList equal Number of KeyList.");
return;
}
double * dimno = mxGetPr( IMAGE_NUM );
int * imno = new int[imnn];
for( i = 0; i < imnn; i ++ )
imno[i] = (int)dimno[i];
LookBigOrder( mem, imno, pref, Rm, Rn );
}
class memlist mem2 = LookBigOrder( mem, gnum );
Rm = mem2.GetEntrysize()-1;
if( nlhs >= 2 ){
Outlist = mxCreateDoubleMatrix( Rm, 2, mxREAL );
double * l = mxGetPr( Outlist );
for( i = 0; i < Rm; i ++ )
l[i] = mem2.GetSize( i );
for( i = 0; i < Rm; i ++ )
l[i+Rm] = mem2.GetIndex(mem2.GetSize( Rm ))[i];
}
Out = mxCreateCellMatrix( Rm, 1 );
for( i = 0; i < Rm; i ++ ){
mxArray * r = mxCreateDoubleMatrix( 1, mem2.GetSize( i ), mxREAL );
double * l = mxGetPr( r );
for( j = 0; j < mem2.GetSize( i ); j ++ )
l[j] = mem2.GetIndex(i)[j];
mxSetCell( Out, i, r );
}
mem.free();
mem2.free();
}
我已经尝试了几种方法来寻找解决办法,但还没有找到解决这个问题的方法。
我该如何解决这个问题?
谢谢!
char16_t可能是由Matlab和c++标准库同时定义的。
当包含C库时,而不是
#include <stdlib.h>
#include <cstdlib>
。我把。h去掉,在前面加一个c。
这应该把它们的内容放入std
命名空间,允许您选择您想要的
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 在Visual Studio中重建我的项目时,我会在同一行错误C2371上遇到2个错误
- MSVC错误C2371 "redefinition; different basic types",除了我没有看到我在哪里重新定义任何东西
- 无法找出导致此错误的原因:C2371
- C2371错误:重定义;不同的基本类型
- 编译C dll部署MATLAB代码时出现C2371错误
- 错误 C2371"DWORD":重新定义;不同的基本类型
- 队列错误 C2371:'ItemType':重新定义;不同的基本类型