unresolved external bei MKL von INTEL



  • hallo,

    ich versuche gerade die MKL von INTEL zuimplementieren und wollte es erstmal ganz langsam angehen

    cpp:

    #include <iostream>
    #include "mkl_service.h"
    
    using namespace std;
    
    int main(void)
    {
    
    	cout<< getcpufrequency();
    	cin.get();
    	return 0;
    }
    

    in der header mkl_service.h steht einfach nur:

    double getcpufrequency();
    

    das Problem:
    "unresolved external symbol _getcpufrequency referenced in function _main"

    ich habe gerade keinen Plan wie ich diesen Fehler beheben kann. Aber um das mal klarzustellen es geht mir nicht um die Funktion getcpufrequency, das passiert bei allen UP´s die ich von dort aufrufe.

    danke schonmal

    Philipp



  • Was willst du mit einer Funktionsdeklaration alleine??



  • wenn du das im header meinst...

    da steht gar nicht mehr (das ist von INTEL geschrieben)

    hier mal ein paar Zeilen davor und dahinter (ich verstehe bei denen nicht den Aufbau):

    ...
    void  MKL_free(void *ptr);                /* Free the memory allocated by MKL_malloc() */
    
    void   getcpuclocks(unsigned MKL_INT64 *); /* gets CPU clocks */
    double getcpufrequency(); /* get CPU frequency in GHz */
    
    void MKL_Set_Num_Threads(int nth);
    int  MKL_Get_Max_Threads(void);
    ...
    

    ich weiß auch nicht woher er eigentlich die freuquency nehmen soll...



  • Der Header allein reicht nicht. Du musst schon die Library zu deinem Programm dazulinken.



  • ähh...ich bin nicht so ein profi...wo und wie linke ich die denn dazu?



  • Das hängt nicht unwesentlich von der Library-Version und dem Betriebssystem ab. Aber in der Dokumentation solltest du eine Anleitung finden.

    Die hier ist beispielsweise für Linux:
    http://support.intel.com/support/performancetools/libraries/mkl/linux/sb/CS-028423.htm



  • Das ist eigentlich ziemlich grundlegend.
    Weißt du denn, wie die lib heißt?

    Schreib dann einfach...

    #pragma comment(lib, "deine.lib")

    ...vor deinen Code oder guck in die Projekteinstellungen und füge die Lib der Linker-Befehlszeile hinzu.



  • also in den vielen vielen verzeichnissen gibt es ne menge lib´s

    ich habe auch schon nach anleitung die sachen eingebunden
    dh.
    ich benutze VS03 und habe dann unter tools-> optionen den pfad der library files, executable files und include files angebunden...

    das müsste doch reichen, oder nicht?



  • shorie77 schrieb:

    ich benutze VS03 und habe dann unter tools-> optionen den pfad der library files, executable files und include files angebunden...

    das müsste doch reichen, oder nicht?

    Nein, das reicht nicht. Und wenn du nicht weißt, welche der vielen Libs du linken musst, hilft wohl nur RTFM.



  • lol, ok...habe schon recht viel gelesen. habe mal nen paar lib´s getestet aber so richtig bringt das nix. in der anleitung stehen 2 drin, die umbedingt gelinked werden müssen (habe ich).

    was ist denn ein typische Fehler bei "unresolved external symbol..."????

    danke bisher



  • Falsche lib


Anmelden zum Antworten