读取文本文件时出错

时间:2015-02-18 09:04:09

标签: c++ matlab

我在用c ++阅读文本文件时遇到问题,但我无法弄清楚出了什么问题。我需要从文件中读取一些复数并使用matlab函数进行一些计算。所以在此之前我编译了matlab库并将它们包含在我的项目中。我测试了它们,它工作正常。但是,当我添加几行代码来从文件中读取数据时,我遇到了一些错误: enter image description here 这是我的代码:

#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。

1 个答案:

答案 0 :(得分:1)

您有链接问题。链接器无法找到函数CrtDbgReport。这是Microsoft调试功能。它是关于使用OutputDebugString API编写调试消息。 Microsoft lib是kernel32.lib - 所以你链接到了吗?具体来说,它正在寻找Unicode版本,即最终的W:CrtDbgReportW。所以你必须在某处设置Unicode构建。即#define UNICODE。

您的lib可能不使用Unicode。

另一种可能性是您正在连接调试matlab lib,但是您正在构建程序的发行版本。反之亦然。