libnodave-0.8.2, BCC55 & testS7online: Fragen zum Compilieren

jochenb

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zottel und all die anderen,

erst einmal Glückwunsch zu libnodave und dem Versuch in den step7-Moloch von Siemens eine open-source Schneisse zu schlagen.

In der Umgebung Windows XP und CP5512 waren meine Versuche mit den bereits vorhandenen Binaries erfolgreich Kontakt mit der CPU aufzunehmen und Daten zu lesen und schreiben. (testS7online.exe)

Nach Ergänzung des BCC-Makefiles makefile.mak um
testS7online.exe: nodave.obj testS7online.obj openS7online.obj
$(LL) /r /Tpe /L$(LP) $(LP)\C0X32 nodave.obj testS7online.obj openS7online.obj , testS7online.exe,,CW32 IMPORT32 ws2_32.lib
gelingt es nun auch, mittels des BCC55 commandlinetools das Beispiel tests7online.exe zu erstellen, aber leider mit zwei Problemen:

1.) Compilerfehler wegen unterschiedlichen Typen, der sich mir für nach längerem Suchen und Vergleichen nicht erschliesst und den ich zunächst durch auskommentieren der beiden Zeilen
//closeS7online(fds.rfd);
ignoriert habe. Ist vermutlich stümperhaft von mir aber erstmal legitim, weil am Ende der Verbindung...

MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
C:/Borland/BCC55/bin/bcc32 -IC:\Borland\BCC55\include -c -DBCCWIN -DDAVE
_LITTLE_ENDIAN testS7online.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
tests7online.c:
Warning W8059 nodave.h 1167: Structure packing size has changed
Warning W8065 tests7online.c 92: Call to function 'getch' with no prototype in f
unction wait
Error E2342 tests7online.c 923: Type mismatch in parameter 'h' (wanted 'int', go
t 'void *') in function main
Error E2342 tests7online.c 929: Type mismatch in parameter 'h' (wanted 'int', go
t 'void *') in function main
Warning W8059 tests7online.c 951: Structure packing size has changed
*** 2 errors in Compile ***
2. Das so erzeugte Programm beendet sich mit einer "unknown software exception...", in dem Moment wo eine Verbindung besteht und der Zugangspunkt verwendet wird, während das Original aus dem Tar-Archive tadellos funktioniert, sodass ich die Umgebung (step7 etc. erstmal nicht in Frage gestellt habe).
Der Wunsch nach einem abgeänderten Beispiel um daraus dann eine eigene Anwendung zu stricken ist unbedingt da!

Habe nun viele Forenbeiträge und READMEs etc. durchforstet, leider ist mir aber nichts besseres eingefallen, als hier um Rat zu fragen.
Einem Beitrag von Zottel nach, sind die im Tar-Archiv enthaltenen Binaries (/win/) ebenfalls mit dem BCC55 allerdings unter Wine übersetzt (worden).

Würd' mich über jeden Kommentar freuen und wünsche allerseits viel Erfolg!

j.
 
Einem Beitrag von Zottel nach, sind die im Tar-Archiv enthaltenen Binaries (/win/) ebenfalls mit dem BCC55 allerdings unter Wine übersetzt (worden).
Da haben wir uns falsch verstanden:
Ältere Versionen sind mit BCC übersetzt worden.
Neuere werden mit MSVC++ übersetzt.
Alles unter Wine, aber das macht keinen Unterschied, außer daß das MAKEFILE.VC.WINE (das mit Sicherheit auf dem neuesten Stand ist, weil damit die releases produziert werden) für GNU make geschrieben ist.

Grund für den Wechsel von BCC zu MSVC++:
1. Es gab mehr Anfragen von Leuten, die MSVC++ benutzten.
2. Die Anbindung an VB habe ich damit schneller hinbekommen.

Nun zu dem Problem: testS7online ist noch nie mit BCC übersetzt worden. Etwas "Unsauberes" geschieht dort: Der Rückgabewert (ein "Handle" oder was auch immer) von openS7online wird in ein struct gepackt, daß sonst zwei file handles oder zwei sockets aufnimmt (unter Linux sind das eh alles file descriptors). Möglicherweise interpretiert BCC die ensprechenden Definitionen a) anders b) in verschiedenen Kontexten verschieden (wegen "Structure packing size has changed").
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Jetzt klappts...

Hallo Zottel,

der Hinweis war gut und nach einigem Downloaden und Compilieren klappt jetzt alles wie gewünscht. Große Klasse!
Erstmal besten Dank, ich denke ich hätte da noch etwas beizutragen.

Gruß, JochenB
 
Zurück
Oben