Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Linkkausongelma?

Jake79 [07.12.2007 19:33:21]

#

Ajattelin kysyä täältä apua, jos joku olisi törmännyt tällaiseen ongelmaan ja tietää vastauksen. Ongelma on se, että pitäisi saada luettua c kielellä MAT-tyyppinen tiedosto joka on Matlabin oma muuttujien tallennukseen käytettävä tiedosto. Matlab tarjoaa näiden tietojen avaamiseen c-kielellä omat c-kieliset koodit ja kirjastofunktiot, joita en ole kuitenkaan onnistunut käyttämään tämän ongelman takia. Tiedosto pitäisi saada luettua, jotta saisin käytettyä lukuarvoja laskentaan.
Ohjelma jota käytän on Code Composer Studio 3.1 ja tämä käyttää laskentaan C67x prosessoria. Jotta MAT-tiedostoja voidaan lukea, pitää tuo "mat.h" tiedosto liittää koodiin ja sen lisäksi kolme *.dll tiedostoa. Koodi on tämän näköinen:

#include <stdio.h>
#include <stdlib.h>
#include "mat.h"

void main(int argc, char **argv)
{
    MATFile *pmat;
    const char* name=NULL;
    mxArray *pa;

    /* open mat file and read it's content */
    pmat = matOpen("signaalit.mat", "r");
    if (pmat == NULL)
    {
        printf("Error Opening File: \"%s\"\n", argv[1]);
        return;
    }

    /* Read in each array. */
    pa = matGetNextVariable(pmat, &name);
    while (pa!=NULL)
    {
        /*
        * Diagnose array pa
        */
        printf("\nArray %s has %d dimensions.", name,
               mxGetNumberOfDimensions(pa));

        //get next variable
        pa = matGetNextVariable(pmat,&name);

        //destroy allocated matrix
        mxDestroyArray(pa);
}
    matClose(pmat);
}

ja tällaisen virheen sitten saan. Olen sen verran aloittelija koodaamisessa, että kaipaan apua tähän ikävään ongelmaan.

[pääohjelma.c] "C:\CCStudio_v3.1\C6000\cgtools\bin\cl6x" -g -fr"C:/Documents and Settings/student/Desktop/CCS/testi/Debug" -d"_DEBUG" -mv6700 -@"Jarkko_testi/Debug.lkf" "pääohjelma.c"

[Linking...] "C:\CCStudio_v3.1\C6000\cgtools\bin\cl6x" -@"Debug.lkf"
<Linking>

undefined first referenced
symbol in file
--------- ----------------
_matOpen C:\Documents and Settings\student\Desktop\CCS\testi\Debug\pääohjelma.obj
_mxGetNumberOfDimensions C:\Documents and Settings\student\Desktop\CCS\testi\Debug\pääohjelma.obj
_matGetNextVariable C:\Documents and Settings\student\Desktop\CCS\testi\Debug\pääohjelma.obj
_matClose C:\Documents and Settings\student\Desktop\CCS\testi\Debug\pääohjelma.obj
_mxDestroyArray C:\Documents and Settings\student\Desktop\CCS\testi\Debug\pääohjelma.obj
>> error: symbol referencing errors - './Debug/testi.out' not built

>> Compilation failure

Build Complete,
2 Errors, 0 Warnings, 0 Remarks.

(Mod. Edit. Kooditagit ja otsikon yhdyssanavirhe kuntoon.)

pukki [08.12.2007 12:56:50]

#

Pitäisikö tuohon linkata vielä mukaan joku staattinen library (.lib)?

Jake79 [13.12.2007 16:02:49]

#

MAT-file tiedostolle on olemassa omat ohjelmakohtaiset staattiset libraryt, mutta CCS 3.1 ohjelmalle niitä ei ole. Ilmeisesti en saa tätä näin toimimaan, vaan minun pitää matlabillä tehdä tiedostosta esim. tekstitiedosto jonne luvut tallennetaan binäärisenä. Kunhan vain saisin ne tallennettua siten, että CCS lukee ne oikein.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta