Code: Alles auswählen
import tango.sys.SharedLib;
import Integer = tango.text.convert.Integer;
import tango.stdc.stringz;
typedef extern (C) void function(char* arg) tdll2;
tdll2 dll2;
void main() {
int stack1, stack2;
auto library = SharedLib.load("Test.dll");
if(library !is null) {
dll2 = cast(tdll2) library.getSymbol("dll2");
asm {
mov [stack1], ESP;
};
dll2(toStringz("Hallo von D"));
asm {
mov [stack2], ESP;
};
dll2(toStringz(Integer.toString(stack2 - stack1) ~ " -> sollte 0 sein, ist es aber nur bei extern(Windows)"));
library.unload();
}
}
Code: Alles auswählen
import tango.sys.SharedLib;
import Integer = tango.text.convert.Integer;
import tango.stdc.stringz;
typedef extern (Windows) void function(char* arg) tdll2;
tdll2 dll2;
void main() {
int stack1, stack2;
auto library = SharedLib.load("Test.dll");
if(library !is null) {
dll2 = cast(tdll2) library.getSymbol("dll2");
asm {
mov [stack1], ESP;
};
dll2(toStringz("Hallo von D"));
asm {
mov [stack2], ESP;
};
dll2(toStringz(Integer.toString(stack2 - stack1) ~ " -> sollte 0 sein, ist es aber nur bei extern(Windows)"));
library.unload();
}
}
Ich würde den Code
Code: Alles auswählen
ProcedureDLL dll2(*ptr)
MessageRequester("pb MessageRequester", PeekS(*ptr))
EndProcedure
Code: Alles auswählen
ProcedureDLL dll2(peter.s)
MessageRequester("pb MessageRequester", peter.s)
EndProcedure