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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 19 von 19

Thema: Ich habe Probleme ein Libnodave Programm in C für Windows zu erstellen

  1. #11
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Thomas,

    kannst du mir bitte noch mal helfen.

    Also ich habe jetzt alles noch mal deinstalliert was nach MinGW ausschaut.

    Hab das ganze MinGW Paket wieder neu installiert.

    Hab die Umgebungsvariablen gesetzt. (und kontrolliert)

    So und jetzt erstelle ich mir einen Projektordner mit:

    testISO_TCP.c und deinem makefile mit den angepassten Pfaden.

    Und jetzt sollte mit mingw32-make -f makefile der Kompiler eine exe ausspucken.

    Bei mir kommen extrem viele Errors.

    Hab ich da noch was vergessen?

    Dankeschön

    bg

    Chris

  2. #12
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Vielleicht solltest du testweise mal ein Hallo-Welt Programm übersetzen, um zu prüfen ob deine Compiler Umgebung überhaupt richtig installiert ist.

    Ansonsten kannst du die gesamte Ausgabe vom Aufruf mal in eine Textdatei kopieren und anhängen.
    Normalerweise sieht man dann auch wie und mit welchen Optionen der Compiler aufgerufen wird.
    Ein makefile ist ja nicht zwingend notwendig, du kannst die einzelnen Objekt-Dateien auch händisch einzeln übersetzen und dann nachher mit den entsprechenden restlichen Bibliotheken zusammenlinken.

    Bei mir sieht die erste Zeile der Ausgabe von make beispielsweise so aus:
    Code:
    gcc.exe -c D:/libnodave-0.8.4.5/nodave.c -o nodave.obj -I"D:/Dev-Cpp/include" -I"D:/libnodave-0.8.4.5" -DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT -std=gnu99 -Wall -pedantic

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    iga-graz (26.03.2010)

  4. #13
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi also helloworld kann ich übersetzen, also die umgebung sollte passen.

    beim make aufruf werden so viele errors erzeugt, dass der compiler mit zu vielen fehlern abbricht.

    und du hast wirklich nur die testISO_TCP.c in den Projektordner kopiert und dein makefile.

    Alles andere hat der Kompiler im Libnodave Ordner gefunden?

    hmmmm..

    Mir gehen schön langsam die Ideen aus.

    Wünsche noch einen schönen Abend.

    bg

    Chris

  5. #14
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Zitat Zitat von iga-graz Beitrag anzeigen
    Hi also helloworld kann ich übersetzen, also die umgebung sollte passen.

    beim make aufruf werden so viele errors erzeugt, dass der compiler mit zu vielen fehlern abbricht.

    und du hast wirklich nur die testISO_TCP.c in den Projektordner kopiert und dein makefile.

    Alles andere hat der Kompiler im Libnodave Ordner gefunden?
    Noch einfachere Variante, ohne makefile etc.

    Zum Erzeugen der testISO_TCP.exe sind 4 Schritte notwendig.
    Vorbereitung:
    Libnodave Archiv entpacken und in einer Eingabeaufforderung in den Ordner wechseln.

    - Schritt 1:
    openSocketw.c übersetzen. In dieser sind die Netzwerkfunktionen vorhanden.
    Code:
    D:\libnodave-0.8.4.5>gcc.exe -c openSocketw.c -o openSocketw.obj -DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT
    Danach sollte im Ordner eine openSocketw.obj vorhanden sein.

    - Schritt 2:
    nodave.c übersetzen.
    Code:
    D:\libnodave-0.8.4.5>gcc.exe -c nodave.c -o nodave.obj -DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT
    Danach sollte im Ordner eine nodave.obj vorhanden sein.

    - Schritt 3:
    testISO_TCP.c übersetzen
    Code:
    D:\libnodave-0.8.4.5>gcc.exe -c testISO_TCP.c -o testISO_TCP.obj -DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT
    Danach sollte im Ordner eine testISO_TCP.obj vorhanden sein.

    - Schritt 4:
    Alle Objektdateien und die Bibliothek für die Winsock Funktionen zur exe zusammenlinken.
    Hier ist die Stelle wo deine Compilerumgebung ins Spiel kommt Da muss du prüfen wo deine Bibliotheken liegen.
    Code:
    D:\libnodave-0.8.4.5>gcc.exe nodave.obj openSocketw.obj testISO_TCP.obj -o testISO_TCP.exe -L"D:/Dev-Cpp/lib" D:/Dev-Cpp/lib/libwsock32.a
    Jetzt sollte eigentlich eine testISO_TCP.exe im Verzeichnis liegen.

    Diesen Ablauf wie oben macht auch make, nur dass dieses noch etwas mehr kann (nur notwendige Dateien übersetzen etc.).
    Ich habe aber auch schon Leute gesehen, denen die makefiles zu kryptisch sind und alles über eine batch-Datei übersetzen. Bei kleineren Projekten geht das auch.

    Nebenbei: Du hast doch ein 32-Bit Betriebssystem oder?

  6. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    iga-graz (26.03.2010)

  7. #15
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Thomas,

    also erst mal vielen Dank für deine Anleitung.

    Es stimmt, so kann ich es ohne Probleme übersetzen.

    Kannst du mir vielleicht noch mal schreiben, wie du dein makefile genau über die Kommandline aufrufst.

    Ich habe mir das makefile noch mal genau angeschaut und es macht ja wirklich exakt das gleiche wie wenn ich händisch kompiliere.

    In Zukunft wäre das natürlich über das makefile etwas komfortabler. Vielen Dank im voraus. Vielleicht habe ich das make einfach falsch aufgerufen.

    BG Chris

  8. #16
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich hab mich jetzt noch ein bisschen gespielt.

    Soweit ich das beurteilen kann habe ich bei deinem make file ein Problem
    mit den Includes

    Code:
    INCS =  -I"C:/MinGW/include" -I"C:/libnodave-0.8.4.5"
    CFLAGS = $(INCS)-DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT -std=gnu99 -Wall -pedantic
    Also wenn ich make mit deinem makefile ohne die $(INCS) Einbindung bei den CFLAGS direkt im libnodave Verzeichnis C:/libnodave-0.8.4.5 ausführe, dann funktioniert die Kompilierung.

    Hier die CFLAGS ohne Includes:
    Code:
    CFLAGS = -DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT -std=gnu99  -Wall -pedantic
    Irgendwas funktioniert da mit den Pfaden nicht. Ich habe aber noch keine Ahnung was. Aber ich bin schon mal froh das es überhaupt funktioniert.

    BG
    Chris

  9. #17
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Zitat Zitat von iga-graz Beitrag anzeigen
    Ich hab mich jetzt noch ein bisschen gespielt.

    Soweit ich das beurteilen kann habe ich bei deinem make file ein Problem
    mit den Includes

    Code:
    INCS =  -I"C:/MinGW/include" -I"C:/libnodave-0.8.4.5"
    CFLAGS = $(INCS)-DBCCWIN -DDAVE_LITTLE_ENDIAN -DDOEXPORT -std=gnu99 -Wall -pedantic
    Also wenn ich make mit deinem makefile ohne die $(INCS) Einbindung bei den CFLAGS direkt im libnodave Verzeichnis C:/libnodave-0.8.4.5 ausführe, dann funktioniert die Kompilierung.
    Ich glaub ich habe das Problem gefunden.
    Bei meinem makefile steht nach dem -I"D:/libnodave-0.8.4.5" noch ein Leerzeichen. Wenn du das löschst fehlt das an den Stellen an denen die Variable später eingesetzt wird, und der gcc kennt somit include Pfad nicht. Prüfe das nochmal nach, bzw. setze hinter $(INCS) noch ein Leerzeichen.

    Ich rufe make einfach mit "make all" auf. Dann wird alles entsprechend der Anleitung im makefile übersetzt.

  10. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    iga-graz (26.03.2010)

  11. #18
    Registriert seit
    15.05.2007
    Beiträge
    46
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo, das war wirklich die Lösung .

    Vielen Dank dafür.

    Auf das wäre ich nicht gekommen.

    Ich kann jetzt ohne Probleme übersetzen !!!!!!!!!!

    Ich muss allerdings mein makefile mit
    C:\meinProjektverzeichnis\mingw32-make -f makefile
    aufrufen.

    Wie du das mit make all machst ist mir noch ein Rätsel.


    Ich habe mir jetzt auch eine Testumgebung mit ACCONtrol S7 aufgebaut, so wie in deinem Beitrag beschrieben
    http://sps-forum.de/showthread.php?t=9875

    Das Testprogramm habe ich mittels localhost (127.0.0.1) lauffähig bekommen. Also alles bereit für weitere Schandtaten.

    Ich hoffe dieser Beitrag hilft auch anderen!

    Wenn noch weitere Vorschläge oder Ideen für die Entwicklung mit Libnodave vorhanden sind bitte weiterhin posten.

    Schönen Tag und BG Chris
    Geändert von iga-graz (27.03.2010 um 23:17 Uhr)
    Zitieren Zitieren Lösung und Testumgebung  

  12. #19
    Registriert seit
    19.04.2010
    Beiträge
    13
    Danke
    2
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hoffe, dass Du Readme.compiling und Readme.win gelesen hast. Ich konnte damit leicht das Projekt unter VS 2008 übersetzen. Wichtig dabei ist, dass vorher vcvars32.bat aufgerufen wird.

Ähnliche Themen

  1. DB aus Programm erstellen
    Von Kiter11 im Forum Simatic
    Antworten: 29
    Letzter Beitrag: 03.02.2011, 21:31
  2. Programm erstellen (IEC, usw.)
    Von marel im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 22.12.2010, 11:05
  3. Habe Probleme mit der Programmierung
    Von detoto im Forum HMI
    Antworten: 0
    Letzter Beitrag: 10.11.2009, 13:45
  4. habe Probleme mit dem blkmove
    Von WaZi im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 18.07.2008, 15:43
  5. VB Programm erstellen
    Von demmy86 im Forum Hochsprachen - OPC
    Antworten: 10
    Letzter Beitrag: 20.01.2008, 16:29

Lesezeichen

Berechtigungen

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