000
19.12.2005, 13:29 Uhr
~Wauschi
Gast
|
Hallo Kollegen,
ich versuche eine .dll (mit Borland 6 erstellt) in .NET und Borland zu verwenden. Zu diesem Zweck habe ich eine .h Datei erstellt welche unter beiden Umgebungen das dynamische Einbinden der DLL bewerkstelligt.
Problem: Beim Borland Compiler muss ich vor jeder Funktion __stdcall schreiben, sonst "Access violation....0x00..." Bei .NET darf ich nicht __stdcall schreiben, sonst "Error C2059, syntax error...usw..."
Wie muss das DLL Interface exportiert werden damit ich es mit einem Header in versch. Umgebungen einbinden kann. Oder, wie muss die DLL Importiert werden damit ich ein Header file für versch. Umgebungen nutzen kann?
Schnittstellen EXPORT der DLL:
C++: |
#define EXPORT extern "C" __declspec(dllexport) #define VERSION 1.0
EXPORT double _stdcall GetDllVersion(void){return VERSION;}
|
IMPORT:
C++: |
#define IMPORT typedef __declspec(dllimport)
IMPORT double (*GET_VERSION)(); GET_VERSION GetDllVersion;
HINSTANCE hDll; hDll = LoadLibrary("Encoder.dll"); // if(hDll == NULL){ ShowMessage("Unable to load Encoder.dll"); }else{ GetDllVersion = (GET_VERSION)GetProcAddress(hDll,"GetDllVersion"); }
|
DANKE |