Forms-DLL Aufruf / Form DLL-Call
Date: 1998/01/02
Message-ID: <68jip5$o3e$1_at_news02.btx.dtag.de>#1/1
While calling a 32bit NT4.0-DLL-function (C-Compiler Borland 5.0)
from Oracle-Forms 4.5.7.6.0 the following error occurs:
"Die DLL ist keine gültige NT - Datei ..." ("The DLL is no valid
NT-File")
Calling the DLL-function with a C-Program: no error
Beim Aufruf einer 32bit NT4.0-DLL-Funktion (C-Compiler Borland 5.0) von Oracle-Forms 4.5.7.6.0 kommt der Fehler: "Die DLL ist keine gültige NT - Datei ...". Der Aufruf mit einem C-Programm: kein Fehler
Thanks/Danke
Joachim
// ******************************************// Forms - Program Unit
// ******************************************
PACKAGE dll_test IS
FUNCTION ret_wert RETURN VARCHAR2;
END;
PACKAGE BODY dll_test IS
lh_csbr_dll ora_ffi.libHandleType;
fh_ret_wert ora_ffi.funcHandleType;
FUNCTION i_ret_wert(funcHandle IN ora_ffi.funcHandleType) RETURN
VARCHAR2;
PRAGMA INTERFACE(C,i_ret_wert,11265);
FUNCTION ret_wert RETURN VARCHAR2 IS
rc VARCHAR2(100);
BEGIN
rc := i_ret_wert(fh_ret_wert);
RETURN (rc);
END ;
BEGIN
BEGIN
lh_csbr_dll := ora_ffi.find_library('zufall.dll');
EXCEPTION WHEN ora_ffi.FFI_ERROR THEN
lh_csbr_dll := ora_ffi.load_library(NULL,'zufall.dll');
END ;
fh_ret_wert :=
ora_ffi.register_function(lh_csbr_dll,'ret_wert',ora_ffi.C_STD);
ora_ffi.register_return(fh_ret_wert,ORA_FFI.C_CHAR_PTR);
END;
// ******************************************// Sourcecode Dll
// ******************************************
#include <windows.h>
#define DLLEXPORT __declspec(dllexport)
DLLEXPORT char * RET_WERT(void);
#pragma argsused
BOOL WINAPI DllEntryPoint(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID
lpvReserved)
{
return TRUE;
}
DLLEXPORT char * RET_WERT(void)
{
return "test";
}
// ******************************************// Sourcecode C-Programm for calling the DLL
// ******************************************
#include <windows.h>
#define DLLIMPORT __declspec(dllimport)
DLLIMPORT char * RET_WERT(void);
#pragma argsused
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine, int nCmdShow)
{
MessageBox(NULL, RET_WERT(), "Titel", NULL);
return TRUE;
}
Received on Fri Jan 02 1998 - 00:00:00 CET