我在用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。
答案 0 :(得分:1)
您有链接问题。链接器无法找到函数CrtDbgReport。这是Microsoft调试功能。它是关于使用OutputDebugString API编写调试消息。 Microsoft lib是kernel32.lib - 所以你链接到了吗?具体来说,它正在寻找Unicode版本,即最终的W:CrtDbgReportW。所以你必须在某处设置Unicode构建。即#define UNICODE。
您的lib可能不使用Unicode。
另一种可能性是您正在连接调试matlab lib,但是您正在构建程序的发行版本。反之亦然。