64 Bit Probleme im Programm

Für allgemeine Fragen zur Programmierung mit PureBasic.
deichi1
Beiträge: 14
Registriert: 08.03.2012 17:43
Computerausstattung: _____________________________________________
i7-12700K 3.60 GHz | 32 GB | Windows 11 Pro (64bit) | PrureBasic 6.10 LTS (64bit)

Re: 64 Bit Probleme im Programm

Beitrag von deichi1 »

Hallo Falko,

vielen Dank für Deine Ausführung, genau das, was Du in Deinem Post mitteilst versuche ich schon die ganze Zeit klarzustellen. Das Einzige was ich nicht verstehe ist, dass es bei Dir auch nicht unter einem x86 Compilat im 64Bit OS läuft. Siehe weiter oben in der Darstellung meiner Tests;-)

Wie angekündigt habe ich jetzt die wpcap.lib eingebunden und getestet.
Hier stellt sich das gleiche Ergebenis, wie in der oben erwähnten Testreihe dar.

Absolut nur unter der Bedingung OS-64-Bit/PB-x64 bekomme ich einen POLINK-Error zur LIB.
Bei allen anderen Varianten kann ich auf die LIB zugreifen und sehe die Daten der Interfaces..

Nachfolgend der PB-Code

Code: Alles auswählen

IncludePath "z:\pfad\Include"
XIncludeFile "pcap.pb"

Procedure getAllAdapters( List adpt.myAdapters() )
  errorBuffer.s = Space(256)
  *pcap_if_t_ptr.pcap_if_t
  If pcap_findalldevs(@*pcap_if_t_ptr, @errorBuffer) = -1
    MessageBox_(0, errorBuffer, "Error finding adapters...", #MB_OK|#MB_ICONERROR)
    ProcedureReturn 0
  EndIf
  ClearList(adpt())
  ResetList(adpt())
  Repeat 
    AddElement(adpt())
    adpt()\deviceName = PeekS(*pcap_if_t_ptr\szDevName)
    adpt()\deviceDescription = PeekS(*pcap_if_t_ptr\szDescription)
    adpt()\addresses = PeekL(*pcap_if_t_ptr\addressesptr)
    *pcap_if_t_ptr.pcap_if_t = *pcap_if_t_ptr\nextStruct
  Until *pcap_if_t_ptr = 0
  ProcedureReturn ListSize(adpt())
EndProcedure

NewList NICAdapters.myAdapters()
numAdapters = getAllAdapters(NICAdapters())
  
If numAdapters > 0
  
  ResetList(NICAdapters())
  While NextElement(NICAdapters())
    Debug NICAdapters()\deviceName
    Debug NICAdapters()\deviceDescription
    Debug Hex(NICAdapters()\addresses)
    Debug "======================"
    ;AddGadgetItem(myDevSelect, -1, NICAdapters()\deviceDescription)
  Wend
  
EndIf

*der Code ist aus dem Internet und funktioniert.*
Bitte den Pfad für die Includes beachten.

Nachfolgend die LIB und die entsprechenden PB-Includes sowie einige Beispiele Deeem2031.
Er hat in der Vergangenheit die original LIB ins PB eingebunden.

http://www.deeem2031.de/PB/PB-WinPcap.zip

Gruß
deichi1
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Re: 64 Bit Probleme im Programm

Beitrag von Falko »

Oh je, da habe ich mich wohl irrtümlich ausgedrückt.
Das mit dem -D funktioniert bei mir in beiden PB-IDEs bzw. Compiler nicht.
Es wird zwar ein Fenster geöffnet und in der Console angezeigt, nur wird der dortige
Inhalt nicht übergeben. Wohl aber, wenn ich mit -i und Interface 1, 2 oder 3 vorgebe
und dann nach Programmstart z.B. den Browser öffne, werden mir die Verbindungsdaten dazu
ausgegeben. Ich vermute mal,
das tshark.exe -D zwar einen Dump in die Console macht, aber dieser Text aus irgendeinem Grund
nicht gelesen werden kann, da tshark sofort beendet wird, so wie es auch in der Hilfe steht.

Gruß,
Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Re: 64 Bit Probleme im Programm

Beitrag von Danilo »

deichi1 hat geschrieben:Wie angekündigt habe ich jetzt die wpcap.lib eingebunden und getestet.
Hier stellt sich das gleiche Ergebenis, wie in der oben erwähnten Testreihe dar.

Absolut nur unter der Bedingung OS-64-Bit/PB-x64 bekomme ich einen POLINK-Error zur LIB.
Bei allen anderen Varianten kann ich auf die LIB zugreifen und sehe die Daten der Interfaces..

[...]

Nachfolgend die LIB und die entsprechenden PB-Includes sowie einige Beispiele Deeem2031.
Er hat in der Vergangenheit die original LIB ins PB eingebunden.

http://www.deeem2031.de/PB/PB-WinPcap.zip
Für 64bit mußt Du eine neue Import-Library (wpcap.lib) für die 64bit-Version der DLL erstellen.

Zum Beispiel mit PellesC 64bit:

Code: Alles auswählen

@echo off
@call "D:\CPP\PellesC\x64\Bin\povars64.bat"
@POLIB.exe wpcap.dll /MACHINE:x64 /OUT:wpcap.lib
Mit VisualC++ oder PlatformSDK geht's genauso, dann ist es einfach Lib.exe.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
deichi1
Beiträge: 14
Registriert: 08.03.2012 17:43
Computerausstattung: _____________________________________________
i7-12700K 3.60 GHz | 32 GB | Windows 11 Pro (64bit) | PrureBasic 6.10 LTS (64bit)

Re: 64 Bit Probleme im Programm

Beitrag von deichi1 »

Hallo Danilo,

ich verneige mich vor Dir und vielen Dank.
Du hast mit Deinem Tip genau ins Schwarze getroffen.
Habe zuerst einen Test mit CallFunktionFast() gemacht, der positiv ausfiehl.
Dann habe ich die wpcap.lib zu wpcap_x64.lib gemacht und siehe da, es klappt.
Nun läuft mein Programm auch auf einer 64Bit-Maschine.

Nochmals vielen, vielen Dank.

Gruß
deichi1
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: 64 Bit Probleme im Programm

Beitrag von ts-soft »

Hätte man es irgendwo Erkennen können, das Du die DLL per ImportLib nutzt, wäre man vielleicht früher
darauf gekommen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten