Author Topic: Update  (Read 16009 times)

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #15 on: 2007-Jul-31 »
Was hab ich verschoben? Die Funktionen werden alle mit extern "C" __stdcall exportiert - so wie die Windows API auch.
Ich schau mal, ob ich für GLBasic exporte gleich einen Wrapper miterzeugen lasse, damit man die DLL in ein Projekt integreiren kann. Aber das dauert noch, weil ich z.Zt. privat viel um die Ohren hab und das mit der DLL noch nicht so recht läuft.

Offline trucidare

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1377
  • Bachelor of Fail
    • View Profile
Update
« Reply #16 on: 2007-Jul-31 »
hmm also wenn ich die dll mit sonem freeware dll export anzeige tool öffne sagt der kein einstiegspunkt gefunden. ich konnte leider nicht mit pe explorer testen der würde das sicherlich finden aber die testversion ist wie gesagt abgelaufen.  aber wenn du sagst es sind normale exports dann werd ich mal weiter testen.
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

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #17 on: 2007-Jul-31 »
Schon mit shift-F8 als DLL erstellt, ja?

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5021
  • O Rly?
    • View Profile
Update
« Reply #18 on: 2007-Jul-31 »
ja und die bringt nichtmal eine Function richtig zurück wie es scheint.

Code: GLBasic [Select]
FUNCTION Plus: X,Y
    E = X+Y
    RETURN E
ENDFUNCTION
die mit EXPORT Plus und Shift+F8 erstellt

dann mit Declare aufgerufen:

Code: GLBasic [Select]
INLINE
        DECLARE(Plus,"Dll-Test.dll",(int,int),int);
        if(Plus>0){
                PRINT("GEHT",10,10); // Als test ob se geladen wird
        }



        LOL = Plus(10,20);

        PRINT(LOL, 100,10);
ENDINLINE
Ausgabe ist 20, aber wieso?
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #19 on: 2007-Jul-31 »
Hähä! Schreib mal:
Code: GLBasic [Select]
EXPORT Plus
in Dein DLL Projekt.
2. GLBasic Zahlen sind vom Typ "DGInt". (Das ist i.d.R. "double", aber schreib ruhig DGInt).
3. if(Plus>0) könnte falsch sein, wenn er Plus als 'int' vergleicht. Mach: if(Plus) oder if(Plus!=0)
4. Ausgabe ist 20, weil FUNCTION Plus im Projekt ist?

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5021
  • O Rly?
    • View Profile
Update
« Reply #20 on: 2007-Jul-31 »
Ich bin verwirrt o.O

könntest du mal ein kleines Beispiel schreiben mit einer Simplen Function ?
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline trucidare

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1377
  • Bachelor of Fail
    • View Profile
Update
« Reply #21 on: 2007-Jul-31 »
also:

Code: GLBasic [Select]
EXPORT Plus

FUNCTION Plus:
    X+Y
ENDFUNCTION
und zum aufruf dann halt die

Code: GLBasic [Select]
INLINE
    DECLARE(Plus,"Dll-Test.dll",(int,int),DGint);
    if(Plus){
        PRINT("GEHT",10,10); // Als test ob se geladen wird
   



    LOL = Plus(10,20);

    PRINT(LOL, 100,10);
    }
ENDINLINE
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

Offline tft

  • Mr. Polyvector
  • ***
  • Posts: 132
    • View Profile
Update
« Reply #22 on: 2007-Aug-01 »
Hi ..

das ist aber alles ziemlich weit weg von bestehenden Basic Konventionen, Kann man denn da überhaupt noch von einem Basic reden. Siet mir stark nach Obewron aus. Wenn das noch jemand kennt.

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Update
« Reply #23 on: 2007-Aug-01 »
Oberon? War das nicht mal als Nachfolger von Modula-2 gedacht? Glaube mich dunkel daran zu erinnern.

Aber stimme dir zu. Das ist alles andere als komfortabel. Dieser C++ / Basic-Mischmasch kann mich auch nicht gerade zu Begeisterungsstürmen hinreißen.

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #24 on: 2007-Aug-01 »
OK. Bitte einen Vorschlag, wie man solche Funktionen in GLBasic einbinden soll.

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Update
« Reply #25 on: 2007-Aug-01 »
;) gute Frage

das mit EXPORT für die DLL-Erstellung ist ja schon recht schön einfach.

Das Einbinden wäre idealerweise ebenso einfach möglich, halt GL-like

Beispielsweise mit einem Befehl CALLDLLFUNC

Beispiel:
CALLDLLFUNC(, , (param1, param2, ...))

natürlich auch nicht so schön wegen Parameterliste


Oder als Blockbefehl

BEGINUSEDLL
   FUNCTION blabla(x, y)
   FUNCTION nixnutz()
ENDUSEDLL

nach dieser Deklaration können die Funktionen wie normale GL-Basic-Funktionen genutzt werden.

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #26 on: 2007-Aug-01 »
Hmm.. oder:
IMPORT "dllname" funktionsname: param1, param2, ... ?

Zumindest für GLBasic funktionen wäre das gut.

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Update
« Reply #27 on: 2007-Aug-01 »
jo, IMPORT wäre wohl noch besser, passt dann auch zu EXPORT ;)

wenn man allerdings dadurch wieder zweigleisig fahren müsste mit EXPORT für GL-DLL's und INLINE für C++-DLL's .... wäre nicht so prickelnd IMHO

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Update
« Reply #28 on: 2007-Aug-01 »
Bei allgemeinen DLLs kommt man um INLINE nicht herum, weil es da eben verschiedene Datentypen gibt, die man u.U. anders gehandhabt haben möchte. Für Newton habe ich z.B. im Hintergrund eine kleine Liste mit Zeigern auf TYPEs gehalten und für die GLBasic Schnittstelle dann den Index in der Liste zurückgegeben.

Aber davon abgesehen, das darf ruhig bisserl kompliziert sein, weil's ja nicht der Normalfall ist.

Offline Quentin

  • Prof. Inline
  • *****
  • Posts: 915
    • View Profile
Update
« Reply #29 on: 2007-Aug-01 »
hmmm tja, stimmt auch wieder ... na dann gefiele mir der Vorschlag mit IMPORT noch am besten. Vielleicht hat ja noch jemand andere Ideen.