Página 1 de 1

Compilar para C

Enviado: 04 Set 2009 19:52
por Hasse
Boa noite colegas.

Estou com um problema novo.

Baixei o xHarbour 1.2.2-6553 via CVS e compilei. Até aqui tudo bem.

Ao compilar um programa que use o MilliSec() o sistema informa um erro de conflito de versões do PCODE (9 para 10) no Cttimer.prg.

Eu imagino que devo recompilar este cttimer.prg. Já tentei compilar para cttimer.obj e copiá-lo para a pasta OBJ mas não resolveu. Então procurei como fazer isto para o cttimer.c mas não achei o caminho das pedras.

Uso o Hbmake para compilar.

Re: Compilar para C

Enviado: 05 Set 2009 00:46
por sygecom
Boa Noite Hasse,
Acabei de atualizar e compilar meu xHarbour do CVS e meu sistema usa essa função MilliSec() e não tive problema algum, tente antes de compilar o xHarbour dar um MAKE_B32 CLEAN, com seu sistema delete todos os .OBJ e recompile tudo, quem sabe ficou algum vestigio de outra versão.

Re: Compilar para C

Enviado: 05 Set 2009 12:19
por Hasse
OK.

Eu também já estava pensando nisso. Obrigado.

Re: Compilar para C

Enviado: 06 Set 2009 09:58
por Hasse
Realmente, Leonardo, o que você previu, acabou acontecendo.

Atualizei para a versão 6571, e tudo está funcionando perfeitamente.

Mas, agora, só como aprendizado: como se compila um prg para C ?

Re: Compilar para C

Enviado: 08 Set 2009 02:03
por sygecom
Existe duas maneiras para isso.
1ª- Seria você pegar todo o codigo C e colocar dentro de um .PRG e antes de iniciar o codigo C você coloca:
#pragma begindump
....codigo c
....codigo c
....codigo c
....codigo c
// e no final a seguinte linha:
#pragma enddump

2ª- Seria compilar o arquivo .C junto com seus arquivos .PRG usando o hbmake, basta colocar dentro da pasta junto com seus .PRG e escolher ele junto na lista de arquivos fontes nas configurações do hbmake.

Re: Compilar para C

Enviado: 08 Set 2009 18:43
por Hasse
Boa noite Leonardo.

A minha pergunta foi mal colocada. É o seguinte:

Tenho um "Teste.prg" e desejo transformá-lo em "Teste.C". Tem como fazer isto ?

Re: Compilar para C

Enviado: 08 Set 2009 18:58
por Maligno
Se a sua intenção é transformar seu PRG em C, saiba que o código em si não será convertido para a sintaxe C. O fonte C correspondente ao PRG apenas conterá um epilhamento de diversos opCodes utilizados pela máquina virtual do [x]Harbour. O fonte C da compilação [x]Harbour é apenas uma "ponte" do compilador XBase para o compilador C.

Re: Compilar para C

Enviado: 08 Set 2009 19:17
por Hasse
Que decepção...

Mas, de qualquer forma, esta é uma informação valiosa, Maligno. Obrigado.

Re: Compilar para C

Enviado: 09 Set 2009 11:37
por gvc
Só para ilustrar, coloque isto no seu código fonte [x]Harbour (PRG)
Qto a ver o código C, o xHarbour cria PCODE para compilar e executar.
Vale observar que de acordo com a versão do [x]Harbour é a versão do PCODE.
Me parece que a última é a versão PCODE 9.
Se vc usa o FWH, precisa tomar cuidado com a versão do [x]Harbour e do FWH.
Não sei se outras bibliotecas gráficas tb tem esse problema.

/*
TIRA_X() // DESABILITA O X da janela
*/

#pragma BEGINDUMP
#include "windows.h"
HB_FUNC ( TIRA_X ) // DESABILITA O X da janela
{
HMENU MenuH = GetSystemMenu(GetForegroundWindow(),FALSE);
EnableMenuItem(MenuH,SC_CLOSE,MF_GRAYED);
}
#pragma ENDDUMP

Re: Compilar para C

Enviado: 09 Set 2009 12:28
por sygecom
Hasse escreveu: A minha pergunta foi mal colocada. É o seguinte:

Tenho um "Teste.prg" e desejo transformá-lo em "Teste.C". Tem como fazer isto ?
É Hasse como disse o Maligno, isso não tem como pegar, mas por outro lado, você pode compilar funções e arquivos .C junto com seu aplicativo e no caso do Harbour até mesmo .CPP(C/C++)
Alias, por que você quer o arquivo em .C se pode ter ele todo em .PRG e compilar no harbour com, MSVC, BCC,MINGW,GCC, INTEL C, e etc...

Re: Compilar para C

Enviado: 09 Set 2009 13:33
por Hasse
Boa tarde Leonardo.
Alias, por que você quer o arquivo em .C se pode ter ele todo em .PRG e compilar no harbour com, MSVC, BCC,MINGW,GCC, INTEL C, e etc...
Na realidade não preciso de qualquer arquivo *.C. Foi somente uma curiosidade no momento, e também para o meu aprendizado.