Romeo,
Please include the code that I posted here inside #pragma BEGINDUMP ... ENDDUMP
http://forums.fivetechsupport.com/viewt ... 44#p193644
create a harbour dll containing functions to be executed
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
-
- Posts: 17
- Joined: Thu Feb 28, 2008 6:56 pm
Re: create a harbour dll containing functions to be executed
Antonio,
Do you know if you can call a harbour DLL from a C# .Net exe ? If so can you provide an example?
Do you know if you can call a harbour DLL from a C# .Net exe ? If so can you provide an example?
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: create a harbour dll containing functions to be executed
Perry,
Here you have an example that I coded for FiveNet:
https://bitbucket.org/fivetech/fivenet/ ... ew-default
Look for:
public class FiveNet
{
// public string AppName;
[ DllImport ( "ftsnet.dll", CallingConvention = CallingConvention.Cdecl ) ]
public static extern void One( uint pBlock );
Here you have an example that I coded for FiveNet:
https://bitbucket.org/fivetech/fivenet/ ... ew-default
Look for:
public class FiveNet
{
// public string AppName;
[ DllImport ( "ftsnet.dll", CallingConvention = CallingConvention.Cdecl ) ]
public static extern void One( uint pBlock );
Re: create a harbour dll containing functions to be executed
Antonio,
I'm not sure that I have the Harbour DLL setup properly. I receive the following error
An unhandled exception of type 'System.EntryPointNotFoundException' occurred in WindowsFormsApplication1.exe
Additional information: Unable to find an entry point named 'OneParam' in DLL 'Mydll.dll'.
This is the code we are using for the DLL
// Build a DLL from this code using: buildhd.bat mydll
// Please review TESTMYDL.prg to see how to use this DLL.
//----------------------------------------------------------------------------//
function Main()
MsgInfo( "Inside DLL main()" )
return nil
//----------------------------------------------------------------------------//
function OneParam( x )
MsgInfo( x )
return nil
//----------------------------------------------------------------------------//
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
__declspec( dllexport ) LONG pascal DOPROC( char * cProcName, char * cParam )
{
PHB_ITEM pItem = hb_itemPutC( NULL, cParam );
if( cProcName )
{
hb_itemDoC( cProcName, 1, ( PHB_ITEM ) pItem, 0 );
hb_itemRelease( pItem );
}
else
MessageBox( 0, "inside the DLL", "DOPROC", 0 );
return 0;
}
BOOL WINAPI DllEntryPoint( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
{
HB_SYMBOL_UNUSED( hinstDLL );
HB_SYMBOL_UNUSED( fdwReason );
HB_SYMBOL_UNUSED( lpvReserved );
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
MessageBox( 0, "DLL properly loaded", "DLL entry", 0 );
hb_vmInit( 0 );
break;
case DLL_PROCESS_DETACH:
MessageBox( 0, "DLL unloaded", "DLL exit", 0 );
break;
}
return TRUE;
}
#pragma ENDDUMP
//----------------------------------------------------------------------------//
I'm not sure that I have the Harbour DLL setup properly. I receive the following error
An unhandled exception of type 'System.EntryPointNotFoundException' occurred in WindowsFormsApplication1.exe
Additional information: Unable to find an entry point named 'OneParam' in DLL 'Mydll.dll'.
This is the code we are using for the DLL
// Build a DLL from this code using: buildhd.bat mydll
// Please review TESTMYDL.prg to see how to use this DLL.
//----------------------------------------------------------------------------//
function Main()
MsgInfo( "Inside DLL main()" )
return nil
//----------------------------------------------------------------------------//
function OneParam( x )
MsgInfo( x )
return nil
//----------------------------------------------------------------------------//
#pragma BEGINDUMP
#include <windows.h>
#include <hbapi.h>
#include <hbapiitm.h>
__declspec( dllexport ) LONG pascal DOPROC( char * cProcName, char * cParam )
{
PHB_ITEM pItem = hb_itemPutC( NULL, cParam );
if( cProcName )
{
hb_itemDoC( cProcName, 1, ( PHB_ITEM ) pItem, 0 );
hb_itemRelease( pItem );
}
else
MessageBox( 0, "inside the DLL", "DOPROC", 0 );
return 0;
}
BOOL WINAPI DllEntryPoint( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved )
{
HB_SYMBOL_UNUSED( hinstDLL );
HB_SYMBOL_UNUSED( fdwReason );
HB_SYMBOL_UNUSED( lpvReserved );
switch( fdwReason )
{
case DLL_PROCESS_ATTACH:
MessageBox( 0, "DLL properly loaded", "DLL entry", 0 );
hb_vmInit( 0 );
break;
case DLL_PROCESS_DETACH:
MessageBox( 0, "DLL unloaded", "DLL exit", 0 );
break;
}
return TRUE;
}
#pragma ENDDUMP
//----------------------------------------------------------------------------//
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: create a harbour dll containing functions to be executed
You are not exporting OneParam() from the DLL so you can not call OneParam() directly from your EXE.
You have to call DOPROC() from your EXE, as it is the exported function of the DLL
You have to call DOPROC() from your EXE, as it is the exported function of the DLL
Re: create a harbour dll containing functions to be executed
NO more help ?
Re: create a harbour dll containing functions to be executed
Hi dear Perry Nichols,
please can you kindly send me at romeox@tiscali.it those files:
MYDLL.PRG
TESTMYDLL.PRG
BUILDHD.BAT
I wrong samethins in my files, and it doesnot work !
FWH 16.02
many thanks
please can you kindly send me at romeox@tiscali.it those files:
MYDLL.PRG
TESTMYDLL.PRG
BUILDHD.BAT
I wrong samethins in my files, and it doesnot work !
FWH 16.02
many thanks
Re: create a harbour dll containing functions to be executed
OK, i retrive my error.
it works now !
tks
it works now !
tks
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: