Eingebundenes Header will nicht



  • Dann ist die Klasse IOBoard nicht bekannt.



  • Jetzt hab ichs fast, es war falsch die Header-Datei local einzubinden(#include "blabla"), ich musste sie so einbinden: #include <blabla>

    Jetzt bekommen ich noch den Fehler:
    /usr/local/include/k8055.h error: ‘Boolean’ does not name a type
    Ich vermute das liegt daran, dass der boolsche Datentyp bei mir schlicht bool heißt. Ich hab jetzt natürlich wenig Lust alle booleans in der Bibliothek rauszusuchen gibt es dafür ein Compileranweisung?



  • typedef bool Boolean;
    

    aber schön ist das nicht, mach lieber ein find&replace



  • Ok, danke hat geholfen Boolean stand zwar nicht für bool wie ich zuerst dachte sonder für "unsigned char", aber das Problem ist umschifft mein Programmcode sieht jetzt so aus:

    #include <iostream>
    #include <k8055.h>
    
    int main(){
    	int addr =  OpenDevice(0);
    	int AnalogChn1 = ReadAnalogChannel(1);
    	std::cout << "Kontakt aufgenommen. Addr.: " << addr << std::endl 
    				<< "Wert Analog-Kanal 1: " << AnalogChn1;
    	CloseDevice();
    	return 0;
    }
    

    und ich bekomme jetzt diese Fehlermeldungen:
    undefined reference to CloseDevice' main.cpp line 9 undefined reference toOpenDevice' main.cpp line 5



  • Also ich komm hiermit nicht weiter. Vielleicht hat ja jemand Lust sich die Sources der Bibliothek runterzuladen, sie auszuprobieren und mir zu sagen was ich falsch machen.
    http://www.mohawksoft.org/?q=node/15
    Wäre nett. 🙂



  • So, nachdem ich schon fast aufgegeben hatte (siehe oben)hab ich nun eine C-Bibliothek gefunden mit der es geht,JUHU. Danke nochmal.



  • Hallo, Ihr Fachleute !

    Benötige Hilfe beim Ansprechen des K8055D: Beim "CloseDevice();" erhalte ich die
    Fehlermeldung: "Die Ausnahme "Unbekannter Softwarefehler" (0x0eedfade) in der Anwendung ander Stelle 0x77ef142 aufgetreten." Ansonsten macht das Programm alles, was es soll....

    Die entscheidenden Teile meines Programmlistings sind:

    #include "K8055D.h"
    #include <windows.h> // for DLL usage
    #include <iostream>
    #include <time.h>

    ....

    int main()
    {
    int status;
    long int A1_in = -1; long int A2_in = -1;
    int D1_in; int z1; int z2;

    // Karte 0 öffnen

    cout << "\nOeffne Karte 0...";
    status = OpenDevice( 0 );
    if ( status < 0 )
    {
    cout << "\nFehler beim Oeffnen der Karte";
    return -1;
    }

    ....

    // Karte schließen

    CloseDevice;
    warte( 1000 );
    return EXIT_SUCCESS;
    }

    Könnt Ihr mir helfen, meinen Blindflug zu beenden ?



  • Ja, der Fehler liegt ziemlich sicher IN deiner Funktion CloseDevice(). (ich hoffe mal, die fehlenden Klammern sind beim Abtippen entstanden)



  • Danke für den Tipp ! Allerdings waren die Klammern die Ursache noch nicht. Diegleiche Fehlermeldung erscheint noch immer. Ich forsche also weiter:

    * "inaktuelle DLL" ?...
    * "DLL wieder freigeben" ?...

    Habe auch schon einige progs aus WWW für das K8050D-Board probiert. - Diegleiche Fehlermeldung tritt bei denen teilweise auch auf.

    BIN FUER JEDEN TIPP DANKBAR.



  • Fehler behoben !
    Ursache war eine fehlerhafte DLL von Vellemann. Er stellt selber eine korrigierte auf seiner Webseite zur Verfügung:

    http://www.velleman.be/be/de/download/files/ ; k8055_dll_2_001.zip

    Damit läuft alles glatt.


Anmelden zum Antworten