Zitat von
Christian Seehase:
Moin Markus,
bist Du sicher, dass die Aufrufkonvention stdcall richtig ist?
Es könnte, z.B., auch cdecl sein.
Der Header ist als extern "C" gekennzeichnet und die aufrufe laufen über FAR PASCAL.
Ich hab mal mit cdecl aufgerufen. Bringt aber auch keine Änderung.
Was mir aber noch aufgefallen ist in dem .NET Wrapper:
Delphi-Quellcode:
[DllImport('api32.dll', EntryPoint='__apiInit', CharSet=CharSet.Ansi)]
strict private class extern function __api32Init([Out] var A_0: Cardinal): boolean; static;
Hier ist der Parameter als OUT gekennzeichnet und vom Typ Cardinal.
Edit:
Um das vollständig zu halten hier noch der eigentliche Aufruf der importierten Funktion:
Delphi-Quellcode:
function API.apiInit: boolean;
begin
Result :=
API.__api32Init(@(
API.a))
end;
strict private class var a: Cardinal;