Einzelnen Beitrag anzeigen

MarioR

Registriert seit: 11. Nov 2005
7 Beiträge
 
Delphi 6 Enterprise
 
#1

Delphi-Win32-DLL-Funktion mit Result Boolean wirft eine AccessViolationException

  Alt 3. Apr 2012, 12:21
Hallo,
ich nutze eine Delphi-Win32-Dll in C# (.Net 4.0 VS2010).
Alle Funktionen arbeiten einwandfrei, bis auf die, welche eine Delphi-Boolean als
Rückgabewert haben. Diese schmeißen eine "AccessViolationException".

hier etwas Code:

Delphi function-Typedef:
DbOpen = function: Boolean; stdcall;
C# function Typedef:
Code:
[return: MarshalAs(UnmanagedType.Bool)]
protected delegate Boolean TMatriKSDbOpen();
protected TMatriKSDbOpen matriKSDbOpen;
C#-Seite Delphi-Dll dynamisch laden
Code:
...LoadLibraryEx...
        public Delegate CreateDynamicDllDelphi(string functionName, Type delegateType)
        {
            IntPtr funcAddr = GetProcAddress(dllHandle, functionName);
            if (funcAddr == IntPtr.Zero)
                throw new EntryPointNotFoundException("Function: " + functionName);
            return Marshal.GetDelegateForFunctionPointer(funcAddr, delegateType);
        }
matriKSDbOpen = (TMatriKSDbOpen)CreateDynamicDllDelphi("DbOpen", typeof(TMatriKSDbOpen));
Benutzen der C#-Seite:
Code:
bool openOk = matriKSDbOpen(); // throw AccessViolationException
ebenfals habe ich getestet:
[return: MarshalAs(UnmanagedType.I1)]

... und nun bin ich mit meinem Latein am ende
  Mit Zitat antworten Zitat