Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: [C++ - LibNoDave] Compilerprobleme bei der Verwendung der DLL

  1. #1
    Registriert seit
    30.09.2014
    Beiträge
    29
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    erst einmal möchte ich mich kurz vorstellen.

    Gelernt habe ich Elektroniker für Betriebstechnik in einem großen Maschinenbaubetrieb, der Schwerpunkt der Ausbildung lag ganz klar auf Steuerungstechnik der Firma Siemens. Nach meiner Ausbildung habe ich noch den staatlich geprüften Techniker gemacht und in meiner Freizeit versuche ich mich so gut es geht mit Programmierung in Hochsprachen und Informatik im Allgemeinen zu befassen.

    Nun zu meinem Problem:

    Ich versuche die LibNoDave anzuwenden, Bytes aus einem Datenbaustein auszulesen und ganz einfach zu visualisieren. Allerdings scheitert dies an wohl an vielen Dingen... Meine ersten Versuche die LibNoDave direkt zu kompilieren mit meinem Programm (über die Header-Dateien) führte zu immer verschiedenen Fehlern, wohl auf Grund der Tatsache das ich Code::Blocks mit MinGW verwende und ich wohl somit einen Zwitter besitze

    Mein jetziges bestreben ist es, LibNoDave als DLL zu benutzen, mit Excel hat das bereits wunderbar funktioniert, aber in C++ scheitert es nun an ein paar Sachen. Ich versuche mir aus der nodave.h meine eigene davelib.h zu bauen mit allen Funktionen die ich brauche, allerdings scheitert es nun an einer Stelle:

    Code:
    typedef struct _daveConnection* (*DaveNewConnectionPtr) (daveInterface*, int, int, int);
    So ergibt das keinen Fehler beim compilieren, allerdings verstehe ich nicht, wieso ich das so schreiben sollte, meiner Meinung nach müsste es

    Code:
    typedef struct _daveConnection* (*DaveNewConnectionPtr) (_daveInterface, int, int, int);
    heißen. Zusätzlich kommt dazu, das er zwar fehlerfrei compiliert, allerdings mir dann in der Runtime abstürzt. Dateien sind im Anhang

    Hat einer ein paar Tipps für mich?
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren [C++ - LibNoDave] Compilerprobleme bei der Verwendung der DLL  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Benutze nodave.h wie es ist. Wenn du meinst, es verkürzen zu müssen, um es besser zu verstehen, mach das NACHDEM du ein Programm mit der Originalversion zustande gebracht hast. Dann siehst du bei jeder Änderung sofort, ob es noch funktioniert.
    Es gibt schon eine vereinfachte Headerdatei, die heißt nodavesimple.h.

    Unglaublich, das "führte zu immer verschiedenen Fehlern". Im Allgemeinen liefern Computer und Compiler reproduzierbar dasselbe.

    Und dann könntest du halt hinschreiben welche Fehler auftreten.

    Aus readme.win: Put the lines
    #define BCCWIN
    #define DAVE_LITTLE_ENDIAN
    before
    #include "nodave.h"

  3. #3
    Rusticus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.09.2014
    Beiträge
    29
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo,

    ja das war wohl missverständlich ausgedrückt, natürlich waren es immer die selben Fehler, ich hatte halt verschiedene Sachen ausprobiert und das ergab verschiedene Meldungen. Das Thema hatte ich so weit eigentlich abgehackt, ich war mit der Variante des dynamischen Ladens eigentlich zufrieden.

    Sofern ich es austausche und meine "libdave.hpp" gegen die "nodave.h" austausche, so scheitert es doch wieder an der selben Stelle leider. Vielleicht ist es auch ein Verständnisproblem

    Das gibt mir meine Anwendung noch aus:
    Code:
    ** Message: Loading DLL...** Message: Loaded DLL - OK
    ** Message: Load Funktion: openSocket...
    ** Message: Load Funktion: closeSocket...
    ** Message: Load Funktion: daveNewInterface...
    ** Message: Load Funktion: daveNewConnection...
    ** Message: plc_request
    ** Message: successfully opened socket to plc
    ** Message: Establish interface - OK
    
    
    Process returned -1073741819 (0xC0000005)   execution time : 4.513 s
    Press any key to continue.
    Code:
    #include <stdlib.h>#include <time.h>
    
    
    //GTK+
    #include <gtk/gtk.h>
    #include <glib.h>
    
    
    #define BCCWIN
    #define DAVE_LITTLE_ENDIAN
    
    
    //LibNoDave
    #include "SharedLibs.h"
    #include "nodave.h"
    
    
    typedef int (*OpenSocketPtr)(int, char*);
    typedef int (*CloseSocketPtr)(int);
    typedef struct _daveInterface*  (*DaveNewInterfacePtr)  (_daveOSserialType, char*, int, int, int);
    typedef struct _daveConnection* (*DaveNewConnectionPtr) (daveInterface*, int, int, int);
    
    
    typedef struct daveStruct{
    
    
        void *hDLL;
        OpenSocketPtr openSocket;
        CloseSocketPtr closeSocket;
        DaveNewInterfacePtr daveNewInterface;
        DaveNewConnectionPtr daveNewConnection;
    
    
    } daveStruct;
    Also ich weiß das es an meinem Code liegt und auch an der Implementierung von "daveNewConnection", ich hätte es gern über diesen Weg gelöst, wenn das nicht geht oder ich es falsch anpacke, werde ich es nochmal über einen anderen Weg probieren müssen. Primär hätte ich gerne verstanden, was ich falsch mache

    Vielen Dank.

    Schöne Grüße,
    Rusticus

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.731
    Danke
    143
    Erhielt 1.685 Danke für 1.225 Beiträge

    Standard

    Ich habe mal eine Schritt-für-Schritt-Anleitung geschrieben, anhand derer du erst mal versuchen kannst die libnodave Beispieldateien zu übersetzen.
    Es kommt ganz ohne make und Konsorten aus, das macht es für den Anfang einfacher zu erkennen woran es liegt wenn es irgendwo hakt:

    http://www.sps-forum.de/hochsprachen...tml#post250944

  5. #5
    Rusticus ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.09.2014
    Beiträge
    29
    Danke
    3
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo Thomas,

    danke für den Link, diesen kenne ich bereits. Ich benutze ja bereits die fertig kompilierte DLL, das Problem liegt in meinen Augen in meiner Deklaration von
    Code:
    typedef struct _daveConnection* (*DaveNewConnectionPtr) (daveInterface*, int, int, int);
    Ich versuche nur zu verstehen, was daran falsch und richtig ist.

    Wenn ich nun total an euch vorbei rede, dann sagt das bitte, im Moment kommt es mir so vor

  6. #6
    Registriert seit
    17.02.2014
    Beiträge
    63
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    meine Frage: wird Libndave auch in der Industrie verwendet?

    VG
    point

  7. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Ja, wir verwenden Libnodave zusammen mit Excel.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #8
    Registriert seit
    17.02.2014
    Beiträge
    63
    Danke
    6
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich werde für Grundlagen meine Abschlussarbeit von Libnodave und andere vergleichbare Methoden eine dokumentation vorbereiten. Kannst du mir weiter helfen?
    VG
    point

  9. #9
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich kann Dir ein Beispiel zeigen, wie und wofür ich Libnodave nutze.
    FAQ: Programmbeispiel für grafische Datenanzeige mit EXCEL + LIBNODAVE

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Sonstiges Sicherheits SPS (Verwendung der Sicherheitsfunktionen)
    Von mallepalle83 im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 01.07.2015, 12:51
  2. TIA Seltsames Verhalten der TON-Timer bei der S7-1200
    Von Thomas_v2.1 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 13.05.2013, 23:56
  3. Verwendung der Fehlerbehandlungsbausteine
    Von Pico1184 im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 06.04.2013, 16:56
  4. Frage zur Vorgehensweise bei der Abfrage mittels TcADS.dll
    Von MikeJ im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 14.03.2013, 22:07
  5. Verwendung der OSCAT Bibliothek
    Von Vaninger im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 26.02.2009, 14:38

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •