【发布时间】:2024-08-03 08:40:02
【问题描述】:
我在用 c++ 读取文本文件时遇到问题,我不知道出了什么问题。我需要从文件中读取几个复数并使用 matlab 函数进行一些计算。所以在此之前我编译了 matlab 库并将它们包含到我的项目中。我对它们进行了测试,它工作正常。但是当我添加几行代码来从文件中读取数据时,我得到了一些错误: 这是我的代码:
#include "spectrum.h"
#include <iostream>
#include <fstream>
#include <complex>
using namespace std;
int main(){
mclInitializeApplication(NULL,0);
spectrumInitialize();
cout<<"Initialization success"<<endl;
double input[4] = {10,20,30,40};
mxArray *x_ptr, *x_ptr1;
mxArray *y_ptr=NULL;
mxArray *y_ptr1=NULL;
double *y;
double *y1;
complex<double> com[256];
ifstream myfile("dep.txt");
double a = NULL;
for(int i=0; i<256;i++)
{
myfile >> a;
com[i].real(a);
myfile >> a;
com[i].imag(a);
}
myfile.close();
x_ptr1 = mxCreateDoubleScalar(256);
x_ptr = mxCreateDoubleMatrix(1,256,mxCOMPLEX);
memcpy((void *)mxGetPr(x_ptr), (void *) com,256*sizeof(complex<double>));
mlfSpectrum_slice(1,&y_ptr,x_ptr,x_ptr1);
y = (double*)mxGetPr(y_ptr);
cout<<"Data: "<<input<<endl;
cout<<"Result: "<<*y<<endl;
mxDestroyArray(x_ptr);
mxDestroyArray(y_ptr);
spectrumTerminate();
mclTerminateApplication();
return 0;
}
我也尝试使用 fstream 和 ifstream。有人知道我在做什么错吗? 顺便说一句,我使用的是 Windows 7 32bit、Visual Studio 2012 和 Matlab R2012b。
【问题讨论】:
-
错误是什么?
-
看起来某些 matlab 生成的 c 文件包含对在其他 matlab 生成的 c 文件中定义的函数的调用,而您的构建中没有包含这些函数。尝试找出哪个 c 文件包含诸如 CrtDbgReportW(...) 之类的定义,并确保您正在构建它并将生成的对象与最终图像链接。
-
疯狂猜测:您是否试图将 Matlab 库的调试版本链接到您自己项目的发布版本?
_CrtDbgReportW仅存在于 VC 运行时的调试版本中,因此如果您使用_DEBUG宏编译 Matlab 库,但将其链接到非调试运行时库,则此错误是有意义的。