Jup, Ich benutzte in der PB dll eine Linklist als Parameter um die Parameter zu übergeben und bekomme auch einenen Pointer zu einem Interface als Antwort zurück.
Ok danke dann muss ich es doch anders machen.
Danke für die Schnelle Antwort.
Gedacht wars eigentlich so mal.
VB
Code: Alles auswählen
Declare Function PluginInit Lib "plugin.dll" Alias "PluginInit" (ByVal plugin As structure_Plugin) As interface_Plugin
PB
Code: Alles auswählen
ProcedureDLL.i PluginInit(*Plugin.Plugin_Structure)
Protected *v.Self
*v = AllocateMemory(SizeOf(Self))
*v\Procedures = ?Procedures
ProcedureReturn *v
EndProcedure
In PB leuft ja alles ohne Probleme.
Code: Alles auswählen
Interface Plugin_Interface
PluginTyp()
...
EndInterface
Structure Plugin_Structure
Library.i
Name.s
SQLiteDatenbank.s
Position.i
...
Proc.Plugin_Interface
EndStructure
Plugin.Plugin_Structure
Library = OpenLibrary(#PB_Any, "plugin.dll")
If IsLibrary(Plugin\Library)
Adresse = GetFunction(Plugin\Library, "PluginInit")
If Adresse
Plugin\proc = CallFunctionFast(Adresse, Plugin)
PluginTyp = PeekS(Plugin\proc\PluginTyp())
EndIf
CloseLibrary(Plugin\Library)
EndIf