Libnodave auf 64Bit kompilieren???

Hallo Trolly70,
Das sieht schlecht aus, habe ich auch schon einmal versucht, hat aber nicht geklappt. Steht hier auch schon bereits im Forum. Libnodave ist meines Wissens nach eine 32bit- Geschichte.

Ich finde aber dass ganze Gerede um 32Bit oder 64Bit überbewertet ist. Wenn mich nicht alles täuscht, sind unter 32Bit 4GB Ram adressierbar, das sollte doch eigentlich für jeden Zweck reichen, oder?:wink:

hans_meiser
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hans Meiser,
Das sieht schlecht aus, habe ich auch schon einmal versucht, hat aber nicht geklappt. Steht hier auch schon bereits im Forum. Libnodave ist meines Wissens nach eine 32bit- Geschichte.
Zu diesem Ergebnis bin ich auch gekommen, naja macht nichts, aber danke für die Bestätigung..

Ich finde aber dass ganze Gerede um 32Bit oder 64Bit überbewertet ist. Wenn mich nicht alles täuscht, sind unter 32Bit 4GB Ram adressierbar, das sollte doch eigentlich für jeden Zweck reichen, oder?:wink:
Ob das jetzt überbewertet oder nicht ist, weiss ich nicht. Kommt auf den jeweiligen Einsatz an. Wenn ich darüber nachdenke, dass meistens Projekte viele Jahre lang supported und auch an neue BS angepasst werden müssen, halte ich 64Bit für eine zukunfssichere Wahl. Zum Beispiel habe ich gelesen, dass Win 2008 64Bit bald keine 32Bit Dienste mehr zulassen wird. Für den Hausgebrauch ist es aber wohl egal. Ist aber auch nur meine Meinung.

Danke und Gruß Trolly70
 
32/64 Bit

Dürfte eigentlich gar kein Problem sein, ich hätte die Tools, gibt es jemand in Rhein/Main, der sich mit der Problematik auseinander setzen möchte?

Wo bekommt man denn die Sourcen?
 
ja, habe nur das Makefile angepasst. Sourcen von libnodave bleiben unverändert!

Läuft bei mir ohne Probleme:

SuSE 10.2 64bit
libnodave 0.8.4
g++ (GCC) 4.1.2

Gruß
Marco

Hallo mp,
danke, das werde ich auch einmal versuchen. Allerdings interessiert es mich auch unter Windows weil ich von Linux weniger Plan habe. Spricht nach deiner Erfahrung etwas dagegen z.B. mit dem MS C++?

Trolly70
 
windows server 2008 r2

Hallo Leute,

läuft Libnodave unter windows server 2008 r2 (64 Bit).
Muss/Soll ich die dll für 64 Bit Kompilieren ?
Als Programmiersprache benützte ich VB.Net 2008.
Sollte ich da auch was beachten?

danke schon mal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Interresse an 64 Bit

Also ich bin auch sehr an der 64 Bit Version interressiert. Ich versuche gerade erst einmal die 32 Bit Version zu übersetzen. Das übersetzen klappt zwar, aber die notwendigen Funktion werden nicht exportiert (kann also nicht darauf zugreifen). Bin gerade ratlos. Versuch mit VS C++ 2008.
Mit dem Makefile ging es gleich gar nicht. Nur kryptische Fehlermeldungen.
Vielleicht bekommt es ja einer von Euch hin.

Mike
 
64 Bit compilieren geht, aber die DLL funzt danach noch nicht! Ich bin da sporadisch dran am probieren, aber das wird noch dauern....

Auf jeden Fall läufts nicht wenn man mit der 64 Bit DLL eine Verbindung aufbauen will! (über TCP, die anderen Verbindungen (seriell) konnte Ich noch nicht testen (hab kein Adapter!), S7Online wird ja nicht funktionieren, da es im Moment nur eine 32 Bit DLL ist!)
 
Habe villeicht noch einen potentiellen Fehler gefunden. In
openS7online wird der Rückgabewert als Handle declariert, aber ein Integer zurück gegeben. Wahrscheinlich bei 64 Bit ein Problem.

Mike
 
Hallo,

also ich bin ein bißchen weiter gekommen.
Code:
[SIZE=2]fds.rfd = [/SIZE]libnodave.openSocket
[SIZE=2]fds.wfd = fds.rfd
[/SIZE]di = New libnodave.daveInterface
di.initAdapter
dc = New libnodave.daveConnection

werden ohne Probleme durchlaufen.
Aber bei
Code:
res = dc.connectPLC()
bekomme ich eine -1 zurück. DaveConnection gibt mir aber einen Pointer zurück.
Ich habe einiges im Sourcecode von int auf Handle geändert. Wenn ich den gleichen Sourcecode für 32 Bit übersetzt funktioniert die Schnittstelle auf einem 32 Bit Rechner. Nur mit 64 Bit kompiliert und auf einem 64 Bit Rechner kommt dieser Fehler. Ich denke, da ist immer noch ein int statt einem Pointer deklariert. Ich komme aber leider nicht so ganz klar, was bei dieser Funktion aufgerufen wird.
Vielleicht seht ihr etwas im Quellcode.

Mike
 
Ich hab keinen 64-Bit-fähigen Rechner. Vielleicht kann mir ja mal einer von euch nen VPN-Zugang verschaffen?

Wennn mein Kollege mit seinem 64 Bit Lappi von Montage zurück ist bestimmt!

Ansonsten schon mal, hasst du vielleicht eine Idee warum schon bei der select Anweisung ein Fehler passiert, obwohl wenn Ich den Wert des Sockets mit printf ausgebe dies immer noch der gleiche wie nach dem öffnen ist? (steht genauer in dem Thread auf c-plusplus.de)
 
...hasst du vielleicht eine Idee warum schon bei der select Anweisung ein Fehler passiert, obwohl wenn Ich den Wert des Sockets mit printf ausgebe dies immer noch der gleiche wie nach dem öffnen ist? (steht genauer in dem Thread auf c-plusplus.de)
Nein. Nur einen Vorschlag zur Methodik:
Mal ein 10-Zeilen Programm schreiben (bzw. copy & pasten), das ein Socket öffnet und dann darauf schreibt. Da sieht man den Effekt (wireshark, echo-server). Dann, wenn klar ist, daß das Socket ok ist und auch richtig an read() übergeben werden kann, select() einfügen. Wenn das geht, eventuelle Erkenntnisse auf Libnodave zurückübertragen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein. Nur einen Vorschlag zur Methodik:
Mal ein 10-Zeilen Programm schreiben (bzw. copy & pasten), das ein Socket öffnet und dann darauf schreibt. Da sieht man den Effekt (wireshark, echo-server). Dann, wenn klar ist, daß das Socket ok ist und auch richtig an read() übergeben werden kann, select() einfügen. Wenn das geht, eventuelle Erkenntnisse auf Libnodave zurückübertragen.

Jo wäre noch nee Idee. Wenn mein Kollege wieder zurück ist, werd Ich mich mal wieder dran machen! Ich hab das ganze ja auch extra mit den Beispielprogrammen von dir, und nicht mit C# getestet, weil vielleicht tauchen da ja noch weitere Probleme auf, beim nutzen einer 64 Bit DLL.

Läufts denn eigentlich unter Linux mit einer 64 Bit DLL? Das könnt ich heut mal Zuhause noch probieren. Da könnt Ich dir auch Zugriff geben falls du Interesse hast!
 
Ok...

Ok, habs heute nochmal auf meinem Linux Server probiert (Ubuntu Server 64Bit).

Compilieren und verbinden klappt da ohne Probleme, somit schein es nur ein Problem mit dem Windows Socket zu sein!
 
Nochwas: Musste im Linux Makefile unter den Compileroptionen aber -fPIC anhängen, damit es compiliert!

(Hab auch noch -m64 angehängt um sicher zu sein das eine 64 Bit Version erzeugt wird (wobei das unter meinen 64 Bit System glaub automatisch der Fall ist!))
 
Zurück
Oben