Rutinas en C++ en FHW
Rutinas en C++ en FHW
Que tal tengo una pregunta, puedo poner una rutina en C++ emebebida en mi programa de FWH o tengo que hacer su equivalencia a Borland C, talvez es una pregunta obvia pero no tengo idea de esto gracias...
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Alex,
Puedes usar C++ siempre que llames a Borland C con el parámetro -P para forzar la compilación en C++. Aqui tienes un ejemplo:
Puedes usar C++ siempre que llames a Borland C con el parámetro -P para forzar la compilación en C++. Aqui tienes un ejemplo:
Code: Select all
// Using C++ with Harbour
// sample developed by FiveTech Software
function Main()
local oTest := Test() // We create a C++ object
XMSGINFO( TEST_IVALUE( oTest ) ) // We retrieve a C++ object data
return nil
#pragma BEGINDUMP
#include <hbapi.h>
class Sample
{
public:
int iValue;
Sample();
};
Sample::Sample()
{
iValue = 123;
}
HB_FUNC( TEST )
{
Sample * p = new Sample;
hb_retnl( ( unsigned long ) p );
}
HB_FUNC( TEST_IVALUE )
{
hb_retnl( ( ( Sample * ) hb_parnl( 1 ) )->iValue );
}
extern "C"
{
HB_FUN_MSGINFO( void );
}
HB_FUNC( XMSGINFO )
{
HB_FUN_MSGINFO();
}
#pragma ENDDUMP
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Disculpen el O.T.; no se nada de C
Se puede leer lo sigiuente de un archivo .rc (si el contenido fuera C), desde nuestros .prg?
gracias
Se puede leer lo sigiuente de un archivo .rc (si el contenido fuera C), desde nuestros .prg?
Code: Select all
1 VERSIONINFO
FILEVERSION 2, 52, 25
PRODUCTVERSION 2, 52, 25
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "Author", "Ing. Mario González\000"
VALUE "CompanyName", "Ideas & Desarrollos\000"
VALUE "FileDescription", "Bancos & Recursos\000"
VALUE "FileVersion", "rev.2.52.25 (build 07/06)\000"
VALUE "InternalName", "mgbyr\000"
VALUE "LegalCopyright", "I&D © 1989-2006\000"
VALUE "ProductName", "Bancos & Recursos\000"
VALUE "ProductVersion", "rev.2.52.25 (build 07/06)\000"
VALUE "OriginalFilename", "mgbyr.exe\000"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 2048, 1200
}
}
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Mario,
Se hace como se describe en esta página:
http://vcfaq.mvps.org/sdk/3.htm
Vamos a construir un ejemplo.
Se hace como se describe en esta página:
http://vcfaq.mvps.org/sdk/3.htm
Vamos a construir un ejemplo.
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Mario,
Aquí está el ejemplo, desarrollado por un buen amigo nuestro y usando un RC desarrollado por nosotros con el editor de recursos de PellesC:
http://hyperupload.com/download/0211476 ... r.zip.html
Aquí está el ejemplo, desarrollado por un buen amigo nuestro y usando un RC desarrollado por nosotros con el editor de recursos de PellesC:
http://hyperupload.com/download/0211476 ... r.zip.html
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
En relación a C++, gracias a las nuevas mejoras en Harbour ya es posible mezclar C y C++ libremente. Esta capacidad aún no está implementada en xHarbour.
Aqui tienen un ejemplo de como se usa ahora:
Aqui tienen un ejemplo de como se usa ahora:
Code: Select all
// Using C++ with Harbour
// sample developed by FiveTech Software
function Main()
local oTest := Test() // We create a C++ object
MsgInfo( TEST_IVALUE( oTest ) ) // We retrieve a C++ object data
return nil
#pragma BEGINDUMP
#include <hbapi.h>
class Sample
{
public:
int iValue;
Sample();
};
Sample::Sample()
{
iValue = 123;
}
HB_FUNC( TEST )
{
Sample * p = new Sample;
hb_retnl( ( unsigned long ) p );
}
HB_FUNC( TEST_IVALUE )
{
hb_retnl( ( ( Sample * ) hb_parnl( 1 ) )->iValue );
}
#pragma ENDDUMP
- Antonio Linares
- Site Admin
- Posts: 37485
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
- goosfancito
- Posts: 1392
- Joined: Fri Oct 07, 2005 7:08 pm
Antonio,Antonio Linares wrote:Alex,
Puedes usar C++ siempre que llames a Borland C con el parámetro -P para forzar la compilación en C++. Aqui tienes un ejemplo:Code: Select all
// Using C++ with Harbour // sample developed by FiveTech Software function Main() local oTest := Test() // We create a C++ object XMSGINFO( TEST_IVALUE( oTest ) ) // We retrieve a C++ object data return nil #pragma BEGINDUMP #include <hbapi.h> class Sample { public: int iValue; Sample(); }; Sample::Sample() { iValue = 123; } HB_FUNC( TEST ) { Sample * p = new Sample; hb_retnl( ( unsigned long ) p ); } HB_FUNC( TEST_IVALUE ) { hb_retnl( ( ( Sample * ) hb_parnl( 1 ) )->iValue ); } extern "C" { HB_FUN_MSGINFO( void ); } HB_FUNC( XMSGINFO ) { HB_FUN_MSGINFO(); } #pragma ENDDUMP
Si tengo un simple .cpp con este código:
Code: Select all
#include "hbapi.h"
//------------------------------------------------------------------------------
class sample {
public:
int iValue;
sample();
mostrar();
};
//------------------------------------------------------------------------------
sample:: sample() {
iValue= 123;
}
//------------------------------------------------------------------------------
sample:: mostrar() {
// Aca quiero que me retorne el valor "123"
}
//------------------------------------------------------------------------------
y quiero desde FWH poder usar esa clase, como hago?
Estoy tratando de entender el mecanismo pero no lo logro ver con las clases. gracias
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
- goosfancito
- Posts: 1392
- Joined: Fri Oct 07, 2005 7:08 pm
Gracias amigo.
Sirvio,
Sirvio,
_ wrote:Gustavo haber si te sirve esto
Main.prgTestc.cCode: Select all
#include "Fivewin.ch" /*-----------------------------------------------------------------------------------------------*/ FUNCTION Main() LOCAL oCpp MsgInfo( "Hola Mundo desde xHarbour" ) MsgInfo( MENSAJEC() ) MsgInfo( MENSAJECPP() ) oCpp := CreateSample() ? SampleMostrar( oCpp ) RETURN NIL
Testcpp.cppCode: Select all
#include <hbapi.h> HB_FUNC( MENSAJEC ){ hb_retc( "hola mundo desde c" ); }
salu2Code: Select all
#include <hbapi.h> extern "C" HB_FUNC( MENSAJECPP ){ hb_retc( "hola mundo desde c++" ); } class sample { public: int iValue; sample(); mostrar(); }; //------------------------------------------------------------------------------ sample:: sample() { iValue = 123; } //------------------------------------------------------------------------------ sample:: mostrar() { return iValue; } extern "C" HB_FUNC( CREATESAMPLE ){ sample * p = new sample; hb_retnl( ( unsigned long ) p ); } extern "C" HB_FUNC( SAMPLEMOSTRAR ){ hb_retni( ( ( sample * ) hb_parnl( 1 ) ) -> mostrar() ); }
Un aporte chico hace grandes cambios.
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar
Apoyemos al proyecto "Hogar pimpinela"
Bajate la aplicación (gratuita) y encuentra en ella toda la info de como podes colaborar.
GRACIAS!
https://play.google.com/store/apps/deta ... .acomprar