Seite 1 von 1

Mein Compiler will keine DLL erstellen

Verfasst: 10.02.2005 20:07
von captain third
moin erstmal,

ich habe mir jetzt mal die dll technik angeguggt,und wollte dann nach ein paar stunden eine dll schreiben.alles gut und schön,sie funktioniert,jetzt mein problem...

mein compiler(PB 3.91 vollversion) will keine dll's machen,ich bin auf Compiler option gegangen und habe shared dll oder so angegebn,wie es in der hilfe stand und dann (nach dem speichern als pb) bin ich auf "erstelle executable" gegangen hab namen ausgesucht für die dll und dann auf speichern,alles gut und schön,keine fehlermeldungen,aber wenn ich dann in den ordner reingehe wo theoretisch die dll sein muss,sehe ich keine dll drinne und wenn ich mit einem prog die dll aufrufe ist sie angeblich nicht da,was mache ich falsch?

ich weiß das die dll funktioniert weil ich die als pb datei gespeichert habe und dann immer mit includefile() eingesetzt habe...(hab natürlich danach alles in proceduredll geschrieben)

könnt ihr mir helfen?

Verfasst: 10.02.2005 20:37
von captain third
ok falscher alarm,aus irgendeinem grund ist jetzt plötzliuch doch ne dll da,fragt mich net warum habs die ganze zeit versucht,und auf einmal war sie da,naja egal.jetzt kommt aber ein anderes problem...

und zwar hab ich (nur aus testzwecken) eine dll geschrieben und dazu ein klitzekleines prog,aber das prog stürzt ständig ab ich zeig euch mal mein code

Code: Alles auswählen

Aus der DLL:
ProcedureDLL ConsolePasswort()
 Repeat
  PrintN("Passwort required")
  Passwort$=Input()
  If Passwort$=("6xb2yz")
   PasswortCorrect=1
  EndIf
 Until PasswortCorrect=1
EndProcedure

und dazu das prog:
OpenLibrary(0, "Data.dll")
 OpenConsole()
 CallFunction(0, "ConsolePasswort")
 PrintN("Willkommen")
 Input()
End
rein theoretisch habe ich mich aber an die hilfe gehalten und alles nach vorschrift gemacht
Beispiel:

ProcedureDLL MyFunction()
MessageRequester("Hallo", "Dies ist eine PureBasic DLL !", 0)
EndProcedure

; Hier das Client Programm, welches die DLL benutzt
;
If OpenLibrary(0, "PureBasic.dll")
CallFunction(0, "MyFunction")
CloseLibrary(0)
EndIf
warum stürzt das prog ständig ab?

Verfasst: 10.02.2005 22:23
von netfreak
So ich habe das Problem gelöst!

schau her

Code der DLL

Code: Alles auswählen

ProcedureDLL ConsolePasswort()
 Repeat
 OpenConsole()
  PrintN("Passwort required")
  Passwort$=Input()
  If Passwort$=("6xb2yz")
   PasswortCorrect=1
  EndIf
 Until PasswortCorrect=1
EndProcedure 
So und hier der Code des Proggs

Code: Alles auswählen


If OpenLibrary(0, "data.dll")
CallFunction(0, "ConsolePasswort")
CloseLibrary(0)
EndIf

So das Problem lag an der Dll du hast keine Console aufgemacht dardurch stürtze alles ab! Die Dll kann ja nich in die Console schreiben die dein Progg aufgemacht hat!

mfg
netfreak

Verfasst: 10.02.2005 22:34
von captain third
das versteh ich net,mit includefile ging das doch.....und wiso kann die dll nix schreiben wenn das prog die console doch schon geöffnet hat?

Verfasst: 10.02.2005 22:38
von MVXA
StdIn und StdOut handle nicht bekannt? Steuer die Konsole direkt über die APIs an. Dürfte abhilfe schafen...

Verfasst: 10.02.2005 22:39
von netfreak
Bei Include Files werden ja auch die Include Datei dirget ins Progg geschrieben. Aber eine Dll ist ja fast wie ein eigenes Progg.

Verfasst: 10.02.2005 23:59
von captain third
achso...gut danke,merk ich mir :D