Update

Previous topic - Next topic

Schranz0r

Aber import macht dann ja nichts anderes als Declare oder liege ich da falsch?

also nochmal grundsätzlich:

Code (glbasic) Select
// Programm : DLL-Test
EXPORT Test // Nur um die DLL zu erstellen !

WHILE TRUE    
    // GLBasic Code
SHOWSCREEN
WEND
END

FUNCTION Test: X,Y
    E = X+Y
    RETURN E
ENDFUNCTION

// Weil mans braucht.....
FUNCTION foo:
ENDFUNCTION

INLINE
    Declare(Test,"DLL-Test.dll",(int,int),int);
    If(Test){

    Test(10,30);
    }
ENDINLINE
Ist das so im Groben richtig?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Quentin

so wie ich das jetzt verstanden habe, ja. Nur natürlich nicht alles in einem Quellcode

1. DLL erstellen
Code (glbasic) Select
EXPORT test

FUNCTION test: x, y
  RETURN x + y
ENDFUNCTION
2. Aufruf im programm
Code (glbasic) Select
IMPORT "test.dll", test: x, y

PRINT test(10, 15)
SHOWSCREEN

tft

Hi ...

IMPORT_DLL("LIBNAME.DLL";"FUNKTIONNAME",par1 as Int, par2 as Int, par3 as float,return as int)

Var=CALL_DLL("FUNKTIONNAME",par1,par2,par3)

Die anzahl Parameter wird durch den IMPORT festgelegt, und CALL_DLL wird beim Compilieren auf gültigkeit geprüft.

Solte eigentlich nicht so schwer sein. Ansonsten schau dir doch mal GFABASic an, Das gibts jetzt umsonst.

trucidare

hmm ich find die möglichkeit von c++ in nem basic ganz klasse. weiß gar nicht was ihr habt. und vorallem so eine devumgebung wie glbasic sie ist schafft ihr nichmal in 20 jahren zusammenzuschustern ;)
was ich damit sagen will ist ganz einfach das glbasic eine offene basic variante ist, die durch INLINE erweitert werden kann. ich hab damit auch schon reine c++ anwendungen gemacht trotzdem blieb es einfach. also nich meckern.

zum anderen will ich gern mal die mac os x sache ansprechen (ich arbeite noch am cross compiler der will aber libjava nich) wäre es nicht möglich eine umgebung auch auf dem mac zu machen? praktisch die ide und einen mac compiler bzw den von xcode. denn nicht jeder mac user wird einen intel mac haben oder einen win pc. das wäre noch ein anlaufpunkt für die mac entwickler.

zu der funktion die die dll laden soll, bin ich für die IMPORT foo: param1, param2 für glbasic funktionen. für c++ funktionen sollte man entweder ne erweiterte IMPORT funktion haben in dem man den typ mit angeben kann oder halt das DECLARE lassen.
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

Kitty Hello

Danke turricade. Sehe ich auch so mit IMPORT/DECLARE. Auch wenn's bisserl verwirrt.  Evtl. mache ich beim Erstellen einer DLL einfach eine gbas Datei, die man blos dazupacken muss. Wäre ja auch leicht.

Die IDE unter Mac ist unmöglich. Die ist in MFC gemacht und hat ewig viel Arbeit gekostet. Evtl. bekommt man's mit WINE hin, aber da flippt der Compiler derzeit noch aus. :/

trucidare

Problem mit wine ist einfach nur die das man auf dem ppc kein x86 code emulieren kann. somit scheidet das aus. eine ide könnte ich dir im cocoa framework zaubern jedoch müsstest du den rest machen. würde dir mein ibook zur verfügung stellen (per remote tag und nacht).

p.s. was habt ihr alle heute mit meinen namen? ich schrieb heute ne mail mit meinem namen unter und bekamm als antwort dann: Sehr geehrter Herr Tohnnaagel....
MacBook Pro 2,2 GHz Core 2 Duo, 4 GB RAM, 160 GB HDD, 8600M GT
Core i3 - 3,07 GHz, 8 GB Ram, 2.5 TB HDD, Geforce GTX 260+ OC

Schranz0r

Tohnnagel LOL

Mach dir nix draus, geht mir täglich so, obwohl ich nen aus Deutschland stammenden Namen habe.... Mein alter Herr dreht da immer voll am Rad... :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

tft

Hi ...

@trucidare .... du hast sicher recht. Es ist halt wichtig welche Ziehlgruppe  @GernotFrisch
ansprechen will. Wenn er einen Hybriden mit der recht gewöhnungs bedürftigen C++ Architekture machen will. Ist das OK. Ich als reiner Basic verwender (Und Registrierter benutzer), brauche andere dinge als jemand der GLBasic als reine lowlevel SDK benötigt, und andere dinge sowiso in C++ macht. In Basic ist die vorgehensweise so wie @Quentin vorgeschlagen hat, am einfachsten für den anwender. Und @GernotFrisch hat sich an die Fahne geschrieben mit GLBasic eine leichte Sprache zu kreiren. Ich weis das es nicht einfach ist die ständigen Wünsche der anwender zu befriedigen. Aber kompliziert kann man es auch mit GNU C haben. Es gibt da eine Lektüre. Die da heist. STANDART OF BASIC.
Ich möchte damit die leistung von @GernotFrisch keinesfals schmälern. Aber er muss halt stellung beziehen damit kommende Kunden wissen woran sie sind.
Ich weis das er daran arbeiten wird wenn es einen machbaren Weg für ihn gibt. War ja bissher immer so. Also ... weiter so @GernotFrisch

MfG Turgut Temucin alias TFT

D2O

GLOBAL Var AS Tdll_loader // Tdll_loader ist ein Interner Type von GLB



Var = loaddll("test.dll") // Loaddll ist eine function vom Type Tdll_loader
                           //und gibt auch diesen TYPE zurück
                           
                           
PRINT Var.name$, 10,10 //Ausgabe vom dll Namen
PRINT Var.anzahl, 10,10 //Ausgabe der anzahl der vorhandenen Funktionen
PRINT Var.func_name$[0], 10,10 //Ausgabe des Functionsnamen mit benötigten Argumenten und rückgabe
                     //Z.B: erste ist er name, letzte die rückgabe, mitendrin die Argumente
                     //math, int,int,float,float

//Functions aufruf

test = Var.run("name der Function",Argument1,Arg2)// Aufruf der function

PRINT test,10,100
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

D2O

ich mach nicht soviel mit dll, sorry :)
I7 2600K; 8 GB RAM ; Win10 Pro x64 | NVidia GTX 750 TI 2048MB ; Realtec OnBoard Sound;
Lenovo ThinkPad T400: XP Pro
GLB Premium-immer Aktuell

Kitty Hello

Das geht so nicht, weil die DLL nicht weiß welche Argumente eine Funktion hat - nur den Namen.

Schranz0r

Noch mal eine bitte an Gernot:

Mach doch mal ein Beispiel wie man eine Simple Function exportiert, und dann die DLL lädt... aber bitte ganz simpel.
Kann ja nur eine Addition beinhalten oder so, reicht ja.... *LIEBGUCK* :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

WPShadow

Schließe mich Schranzi an! Bin auch neugierig, wie's funktioniert!!!
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Das ist noch richtig Beta. Ich mach ganz klar ein Beispiel, wenn's läuft.