Probleme mit DLLs in Blitz3D?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bruce85

Betreff: Probleme mit DLLs in Blitz3D?

BeitragSa, Sep 13, 2008 2:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich versuche gerade meine DLL in Blitz3D einzubinden, aber sobald ich im Ordner userlib eine Datei erstelle mit der endung .decls und Blitz3D öffnen möchte, steigt meine CPU Auslastung auf 100 % und es geschieht garnix, ich bekomme nicht einmal Blitz3D zusehen.
Wenn ich den Taskmanager öffne, sehe ich 1 mal Blitz3D.exe mit 0 % auslastung und blitzcc.exe mit 100 % auslastung.

So, wenn ich den Prozess blitzcc.exe beende, dann kommt wieder ein Prozess "blitzcc.exe" hinzu, beende ich diese auch, nun erhalte ich folgende fehlermeldung:
Screen

Weiss einer vieleicht, was die Ursache sein könnte?

Ich bedanke mich schonmal im Voraus.

Edit: Jetzt geht komischerweise alles wieder, aber wenn ich die Function von der DLL in Blitz3D aufrufen möchte, dann erhalte ich folgende fehlermeldung:
Memory access violation

Liegt es vieleicht daran, das ich eine DLL Datei benutze, diese ich in Delphi geschrieben habe?
Ich habe diese DLL Datei Testweise mal in C++ umgeschrieben und diese kann ich problemlos in Blitz3D verwenden.

Ich habe mal zum Test eine einfache funktion in Delphi geschrieben, diese einfach nur "Hello World" ausgibt:
Code: [AUSKLAPPEN]
library HelloWorldDLL;

uses
  SysUtils,
  Classes;

{$R *.res}

function HelloWorld(): string; stdcall;
begin
  result := 'Hello World!';
end;

exports
  HelloWorld;

begin
end.


und hier ist mal meine .decls Datei:
Code: [AUSKLAPPEN]
.lib "HelloWorldDLL.dll"
HelloWorld$():"HelloWorld"


Ich weiss, das hier ist kein Delphi Forum, aber es geht mir darum, diese Funktion von der DLL Datei in Blitz3D aufzurufen.
Ich habe mal versucht, hinter der Function statt stdcall cdecl zu schreiben, leider kommt der gleiche fehler in Blitz3D.

Ich wäre euch sehr dankbar, wenn mir da einer weiterhelfen könnte.

MfG

Abrexxes

BeitragSa, Sep 13, 2008 8:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie fragst du denn Befehl denn ab?

Richtig wäre :
Code: [AUSKLAPPEN]

meinText$ = HelloWorld ()


Ich nutze IDEal, da sehe ich am Highlighten sofort ob der Befehl überhaupt richtig erkannt wird.
 

bruce85

BeitragSa, Sep 13, 2008 13:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die antwort.

Der befehl HelloWorld wird in Blitz3D Hellblau dargestellt und ich lasse zum Test mit Print diese Funktion aufrufen:
Code: [AUSKLAPPEN]
Print HelloWorld()


aber er sagt mir immer:
Memory access violation

Wenn z.B. der befehl in der DLL Datei nicht gefunden werden kann, dann bekomme ich diese fehlermeldung:
User lib function not found

Aber diese existiert in der DLL Datei, nur kann sie irgendwie nicht aufgerufen werden.

Der fehler müsste in der DLL Datei sein, ambesten Check ich mal alles durch und versuchs dann noch einmal.

Aber trotzdem, Danke.

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250
 

ChristianK

BeitragSa, Sep 13, 2008 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du brauchst PChar als Rückgabetyp und ich glaube, die Zeile muss
Code: [AUSKLAPPEN]
HelloWorld := 'Hello World!";
heissen.
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
 

bruce85

BeitragSa, Sep 13, 2008 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank für die Hilfe.

Jetzt funktioniert es, ich habe pchar als Rückgabetyp genommen.

Und Zeichenketten werden in Delphi mit Hochkomma dargestellt und nicht mit ".

MfG
AMD Athlon(tm) II X2 250, 8 GB DDR, MSI MSI 770-C45, GeForce GTS 250

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group