Page 2 of 2

Re: create a harbour dll containing functions to be executed

Posted: Wed Sep 07, 2016 2:08 pm
by Antonio Linares
Romeo,

Please include the code that I posted here inside #pragma BEGINDUMP ... ENDDUMP

http://forums.fivetechsupport.com/viewt ... 44#p193644

Re: create a harbour dll containing functions to be executed

Posted: Thu Sep 08, 2016 6:53 pm
by Perry Nichols
Antonio,

Do you know if you can call a harbour DLL from a C# .Net exe ? If so can you provide an example?

Re: create a harbour dll containing functions to be executed

Posted: Thu Sep 08, 2016 8:28 pm
by Antonio Linares
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 );

Re: create a harbour dll containing functions to be executed

Posted: Thu Sep 08, 2016 8:51 pm
by rkurian
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

//----------------------------------------------------------------------------//

Re: create a harbour dll containing functions to be executed

Posted: Thu Sep 08, 2016 10:07 pm
by Antonio Linares
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

Re: create a harbour dll containing functions to be executed

Posted: Mon Sep 19, 2016 9:07 am
by Romeo
NO more help ?

Re: create a harbour dll containing functions to be executed

Posted: Mon Sep 19, 2016 9:36 am
by Romeo
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

Re: create a harbour dll containing functions to be executed

Posted: Mon Sep 19, 2016 9:53 am
by Romeo
OK, i retrive my error.

it works now !

tks

Re: create a harbour dll containing functions to be executed

Posted: Mon Sep 19, 2016 11:21 am
by Antonio Linares
very good :-)