Ältere DLL wird nicht mehr geladen

Anfängerfragen zum Programmieren mit PureBasic.
chris1975
Beiträge: 5
Registriert: 10.06.2024 17:58

Ältere DLL wird nicht mehr geladen

Beitrag von chris1975 »

Hallo zusammnen,
ich benutze schon seit vielen Jahren die twscann.dll um auf Scanner zuzugreifen.
Das hat für mich bis zur PureBasic 6.04 super funktioniert.
Nun, mit der Version 6.11 wird die DLL nicht mehr geladen.
DLL ist 32Bit
PureBasic 6.11 LTS (Windows - x86)

Da ich eher Anfänger bin, stehe ich hier vor einem Problem.
Diese Zeilen hier haben funktioniert. Nun aber nicht mehr....
OpenLibrary öffnet die DLL nicht mehr.

Code: Alles auswählen

If OpenLibrary(#scanner_dll, "TwScann.dll")
  ergebnis =  CallFunction(#scanner_dll, "IsTwain")
Else
  MessageRequester("Fehler","Kann die Datei twscann.dll nicht laden",#MB_ICONERROR)
EndIf

If ergebnis=0 
  MessageRequester("Fehler","Kein gültiger Twain-Treiber!")
  
  End
EndIf
Wenn ich mit Version 6.04 arbeite, geht es wieder.
Ich würde mich über einen Tipp freuen!
Grüße,
Christoph
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Ältere DLL wird nicht mehr geladen

Beitrag von HeX0R »

Füge mal den Pfad zur dll dazu, das Problem kommt vermutlich durch die DLL protection (siehe Compiler-Einstellungen, da kann man das auch an und ausschalten).
DLLs ohne Pfadangabe zu laden ist immer irgendwie "gefährlich"
chris1975
Beiträge: 5
Registriert: 10.06.2024 17:58

Re: Ältere DLL wird nicht mehr geladen

Beitrag von chris1975 »

Hallo HeXOR,,
danke für die schnelle Antwort!
habe den Pfad hinzugefügt, und die DLL preloding protection eingeschaltet.
Hat leider nicht funktioniert.
Die DLL befindet sich im Verzeichnis der PBasic-Datei.
Hatte den Pfad auch schon mal mit GetCurrentDirectory() ermittelt. Ging auch nicht.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Ältere DLL wird nicht mehr geladen

Beitrag von DarkDragon »

Da gabs was im Englischen Forum. Das ist wegen dem MSVCRT update so, wenn ich mich recht erinnere.

Guck am besten mal mit dem dependency walker drauf oder so oder probiere den anderen Linker.

Aber ich bin mir nicht 100% sicher und finde auch den Link nicht mehr.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
chris1975
Beiträge: 5
Registriert: 10.06.2024 17:58

Re: Ältere DLL wird nicht mehr geladen

Beitrag von chris1975 »

Okay, das werde ich mir anschauen.
Vielen Dank für den Hinweis!
chris1975
Beiträge: 5
Registriert: 10.06.2024 17:58

Re: Ältere DLL wird nicht mehr geladen

Beitrag von chris1975 »

Hallo zusammen,
wie es ausschaut wird diese DLL in Zukunft nicht mehr laufen.
Das liegt wohl tatsächlich an dem MSVCRT Update.
Mal schauen... es gibt ja auch andere Wege :)
Danke für Euren Support!
Benutzeravatar
jacdelad
Beiträge: 404
Registriert: 03.02.2021 13:39
Wohnort: Riesa
Kontaktdaten:

Re: Ältere DLL wird nicht mehr geladen

Beitrag von jacdelad »

Du kannst immer noch versuchen mit einer älteren Version von PureBasic eine DLL als Mittelsmann einzusetzen. Ist zwar etwas umständlich, aber hey, wenn's funktioniert?!
Guten Morgen, das ist ein schöner Tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
chris1975
Beiträge: 5
Registriert: 10.06.2024 17:58

Re: Ältere DLL wird nicht mehr geladen

Beitrag von chris1975 »

Ja, genau. Das wird auch noch einige Zeit funktionieren. 👍
Antworten