Forms-DLL Aufruf / Form DLL-Call

From: <gooss_at_t-online.de>
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

Original text of this message