簡體   English   中英

編譯MatIO時鏈接錯誤

[英]Linking error while compiling MatIO

我已經使用此處提供的指令構建了matio 但是,當我嘗試運行下面給出的代碼時,出現以下錯誤:

/tmp/ccIrtdDv.o: In function `main':
test.cpp:(.text+0x39): undefined reference to `Mat_Open'
test.cpp:(.text+0xaa): undefined reference to `Mat_VarRead'
test.cpp:(.text+0x20b): undefined reference to `Mat_VarRead'
test.cpp:(.text+0x359): undefined reference to `Mat_VarRead'
test.cpp:(.text+0x43c): undefined reference to `Mat_VarRead'
test.cpp:(.text+0x51a): undefined reference to `Mat_Close'
collect2: ld returned 1 exit status

這是我編寫的代碼。

#include <iostream>
#include <matio.h>
#define tS(x) std::cout<<"\t"<<(#x)<<" == "<<(x)<<"\n" 
int main(int argc, char **argv)
{
    const char *fileName = argc==1?"./S.mat":argv[1] ;
    mat_t *mat = Mat_Open(fileName,MAT_ACC_RDONLY);
    if(mat)
    {
        std::cout<<"Otwarto plik do odczytu\n\tmat == "<<mat<<"\n" ;

        matvar_t *matVar=0 ;
        std::cout<<"Wypisujemy dane\n\n" ;
        std::cout<<"x:\n" ;
        matVar = Mat_VarRead(mat, (char*)"x") ;
        if(matVar)
        {
            unsigned xSize = matVar->nbytes/matVar->data_size ;
            const double *xData = static_cast<const double*>(matVar->data) ;
            for(int i=0; i<xSize; ++i)
            {
                std::cout<<"\tx["<<i<<"] = "<<xData[i]<<"\n" ;
            }
            std::cout<<"\n" ;
            for(int i=0; i<matVar->rank; ++i)
            {
                std::cout<<"\tdim["<<i<<"] == "<<matVar->dims[i]<<"\n" ;
            }
        }

        std::cout<<"y:\n" ;
        matVar = Mat_VarRead(mat, (char*)"y") ;
        unsigned ySize = matVar->nbytes/matVar->data_size ;
        const double *yData = static_cast<const double*>(matVar->data) ;
        for(int i=0; i<ySize; ++i)
        {
            double d = yData[i] ;
            std::cout<<"\ty["<<i<<"] = "<<d<<"\n" ;
        }
        std::cout<<"\n" ;
        for(int i=0; i<matVar->rank; ++i)
        {
            std::cout<<"\tdim["<<i<<"] == "<<matVar->dims[i]<<"\n" ;
        }

        std::cout<<"minX, step:\n";
        matVar = Mat_VarRead(mat, (char*)"minX") ;
        const double *minXData = static_cast<const double*>(matVar->data) ;
        std::cout<<"\tminX = "<<minXData[0]<<"\n" ;
        std::cout<<"\n" ;
        for(int i=0; i<matVar->rank; ++i)
        {
            std::cout<<"\tdim["<<i<<"] == "<<matVar->dims[i]<<"\n" ;
        }

        matVar = Mat_VarRead(mat, (char*)"step") ;
        const double *stepData = static_cast<const double*>(matVar->data) ;
        std::cout<<"\tstep = "<<stepData[0]<<"\n" ;
        std::cout<<"\n" ;
        for(int i=0; i<matVar->rank; ++i)
        {
            std::cout<<"\tdim["<<i<<"] == "<<matVar->dims[i]<<"\n" ;
        }

        Mat_Close(mat);
    }
    else
    {
        std::cout<<"Nie można otworzyć pliku\n" ;
        return 1;
    }
    return 0;
}

我使用以下代碼編譯代碼:

g++ -I/usr/include -L/usr/local/lib test.cpp -o test

安裝是否存在問題,因為我只是按照其自述文件中的步驟進行操作。 如果沒有,我該如何解決? 提前致謝。

您應該指定-l選項。 編譯器不會掃描所有庫以查找符號。 F / e:

g++ -I/usr/include -L/usr/local/lib -lmatio test.cpp -o test

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM