Error bei DLL-Benutzung?

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

#Reaper

Newsposter

Betreff: Error bei DLL-Benutzung?

BeitragDi, Okt 02, 2007 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich versuche gerade die InpOut32.dll (für den Parallelport) in BMax zu benutzten, aber irgendwie will das nicht so ganz gelingen.. :-/

Code: [AUSKLAPPEN]
Global DLLHandle = LoadLibraryA("Inpout32")

Global Inp32(Port:Int)=GetProcAddress(DLLHandle,"Inp32")
Global Out32(Port:Int, Value:Int)=GetProcAddress(DLLHandle,"Out32")


Print Out32(888,1)
Print Inp32(888)
Delay 10
Print Inp32(888)


Wenn ich 2mal Inp32() ausführe, gibt es immer ein "Unhandled Memory Exception Error". Ich weiß nicht warum :-/
Hat jemand eine Idee..?

MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Vertex

BeitragDi, Okt 02, 2007 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst ja auch mal darauf prüfen, ob nicht die Funktionsadressen Null sind. Wenn ja, versuchs mit "Inp32@4" und "Out32@8" als Funktionsnamen.
vertex.dreamfall.at | GitHub
 

#Reaper

Newsposter

BeitragDi, Okt 02, 2007 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, kommt leider immer nur, dass es eine (falsche?) Angabe ist: "Attempt to call uninitialized function pointer"
Hab bei beiden @4 und @8 ausprobiert

Leider hab ich noch nicht so viel Ahnung, wie man sowas richtig macht Sad
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

Dreamora

BeitragDi, Okt 02, 2007 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Überprüft ob DLLHandle <> 0 ist.
Denn im simpelsten Fall existiert die DLL einfach nicht bzw. kann nicht geladen werden (da der Dateiname nicht vollständig ist)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

#Reaper

Newsposter

BeitragDi, Okt 02, 2007 21:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, ja, hatte ich am Anfang auch so drinnen, sorry.
DLLHandle ist ungleich 0 :-/

Wundert mich, mit B3D ging das ganz einfach, ohne große Probleme: https://www.blitzforum.de/foru...hp?t=13485


Mir fällt auch gerade auf, dass die Fehlermeldung erst beim beenden des Programmes auftaucht.

Code: [AUSKLAPPEN]

Global DLLHandle = LoadLibraryA("InpOut32")

If DLLHandle=0 Then Print "Can't load DLL";End

Global Inp32(Port:Int)=GetProcAddress(DLLHandle,"Inp32")
Global Out32(Port:Int, Value:Int)=GetProcAddress(DLLHandle,"Out32")

Print "Out: " + Out32(888,1)
Print "Inp1: " + Inp32(888)
Delay 10
Print "Inp2: " + Inp32(888)
'Print "Inp3: " + Inp32(888)

Print "! Delay"

Delay 1000
Print "!"


Wenn man Inp3 auskommentiert, gibt BMax bei mir aufeinmal garkeine Fehlermeldung mehr zurück (ohne Debugging). Ohne Inp3 gibt er die Meldung jedoch aus. Wenn alle Inp32()'s auskommentiert sind, gibt es zu mindestens keine Fehlermeldung.
Ich kann auch leider nun nicht testen, ob überhaupt Out32 richtig funktioniert Confused
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

ChristianK

BeitragDi, Okt 02, 2007 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast vermutlich eine falsche ( bzw. veraltete ) DLL.
Eine neuere Version, die auch unter Win 2000/XP läuft gibt's da -> http://logix4u.net/inpout32_source_and_bins.zip
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

#Reaper

Newsposter

BeitragDi, Okt 02, 2007 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne, mit der geht es leider auch nicht Sad
Scheint auch die seleb Version zu sein, aber mit der alten geht es in B3D ja auch immernoch :-/

Kann es vielleicht mal kurz jemand bei sich antesten? Nur damit ich evt. ausschließen kann, dass es doch irgendwie an meinem PC liegt. Wäre nett, danke Smile
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

ChristianK

BeitragDi, Okt 02, 2007 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe den selben Fehler, wenn ich die alte Version benutze. Mit der neuen geht's! oO
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

#Reaper

Newsposter

BeitragDi, Okt 02, 2007 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
:-/

Naja, gut... dann liegst vielleicht an meinem PC.. :-/
Seltsamm ist halt nur, dass das B3D-Programm keinen Fehler bringt.. Confused

Mal schauen, vielleichts geht es ja morgen ^^°
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Suco-X

Betreff: ...

BeitragDi, Okt 02, 2007 23:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Just test

Code: [AUSKLAPPEN]

Global Inp32(Port:Int)"win32"=GetProcAddress(DLLHandle,"Inp32")
Global Out32(Port:Int, Value:Int)"win32"=GetProcAddress(DLLHandle,"Out32")

Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

#Reaper

Newsposter

BeitragMi, Okt 03, 2007 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Juhu!
Keine Fehlermeldung mehr! Danke! Very Happy

Geht mir alter und neuer Version Wink Smile


MfG
#Reaper Very Happy


(Wieder viel dazugelernt Smile )
(Und nun 3 Auswahlversionen von den DLLs Wink )
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Suco-X

Betreff: .....

BeitragMi, Okt 03, 2007 0:13
Antworten mit Zitat
Benutzer-Profile anzeigen
np.
Hättest du kurz gesucht, hättest du vielleicht mein altes DLL Tutorial gefunden. Dort ist das Problem + Lösung auch beschrieben. Aber auch ich hatte ganz vergessen, dass ich dafür mal ein Tutorial schrob. Smile
Mfg
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB
 

#Reaper

Newsposter

BeitragMi, Okt 03, 2007 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, das Tutorial hab ich wohl übersehen Embarassed


MfG
#Reaper Smile
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

#Reaper

Newsposter

BeitragSa, März 15, 2008 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab mal wieder ein Problem:

Und zwar versuche ich diesmal ChristianK's Shortcut.dll einzubinden.
Leider gibt bei mir schon CreateShortcut() immer nur 0 zurück, und ich weiß mal wieder nicht warum.

Code: [AUSKLAPPEN]
Global   DllHandle      :Int   = LoadLibraryA("Shortcut")
Global   CreateShortcut:Int()"Win32"= GetProcAddress(DllHandle, "CreateShortcut")


Habe es nun schon mit und ohne "Win32" ausprobiert etc.
Was mach ich denn nun schonwieder falsch? Embarassed


MfG
#Reaper
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7
 

ChristianK

BeitragSa, März 15, 2008 15:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst erst das COM initialisieren. Blitz3D macht das automatisch, deshalb hab ich es nicht erwähnt. Wink

Code: [AUSKLAPPEN]
Import "-lole32"

Extern "Win32"
   Function CoInitialize:Int( reserved:Int Ptr )
End Extern

CoInitialize( Null )
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

#Reaper

Newsposter

BeitragSa, März 15, 2008 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh, danke! Smile
Das wusste ich nicht (und hab kA davon Sad ) Very Happy


PS:
Wäre das bei deiner DLL richtig:
SetShortcutPath( link:Int, path$z )"Win32"

Oder muss ich normale Strings benutzen?

Edit: Hat sich erledigt Wink
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group