Página 5 de 5

Re: Porque eu uso Harbour.

Enviado: 02 Dez 2009 19:39
por asimoes
Amigos do Forum,

Venho mais uma vez pedir ajuda de vocês, após vencer as etapas de baixar o msvc 2008 express, instalar, depois compilar o harbour com o msvc, gerar a lib do rddleto e rddleto.exe, as libs da hwgui fui fazer um teste com um programa meu que se chama producao.exe já é gerado com bcc. Agora estou tentando com msvc e alguns erros estão aparecendo e eu não sei o que eu fiz de errado.

o erro:
D:\Harbour\DELIVE~1>HBMK2 PRODUCAO.HBM
hbmk2: Processing environment options: -platform=win -compiler=msvc
hbmk2: Linkando... producao.exe
gtwvg.lib(wvgutils.obj) : error LNK2005: _lpwAlign already defined in hwgui.lib(dialog.obj)
gtwvg.lib(wvgutils.obj) : error LNK2005: _nCopyAnsiToWideChar already defined in hwgui.lib(dialog.obj)
producao.exe : fatal error LNK1169: one or more multiply defined symbols found


As bats que eu criei para gerar o executável:

gera.bat (set de variaveis de ambiente, etc)
set hb_compiler=msvc
set lib=d:\harbourx\lib\win\msvc
set include=d:\harbourx\include;c:\projetos\hwgui\include
call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
call app.bat > erros.txt
pause
---------------------------------------------------------------------------------------
app.bat:
hbmk2 producao.hbm %1
---------------------------------------------------------------------------------------
producao.hbm:

Código: Selecionar todos

# ---------------------------
# Nome do Execut vel
# ---------------------------
-oproducao
# ---------------------------
# Bibliotecas
# ---------------------------
-lhwgui
-lprocmisc
-lhbct
-lhbgt
-lgtwvg
-lgtwvt
-lhbnf
-lhbwin
-lxhb
-lrddleto
-lhbtip
# ---------------------------
# Caminhos dos Includes
# ---------------------------
-incpath=d:\harbourx\include;c:\projetos\hwgui\include
# ---------------------------
# Caminho das Libs da HWGui
# ---------------------------
-Lc:\projetos\hwgui\lib
#-Lc:\minigui\harbour\lib
# ---------------------------
# Outros Parametros
# ---------------------------
-workdir=.\
-gtgui
-head=native
-n
-nowarn
-inc
-mt
-b
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
PRODUCAO.RC
PPRO0000.PRG
PPRO0001.PRG
BARRA.PRG
EDITOR.PRG
ERRORSYS.PRG
GETCALC.PRG
GETSYS2.PRG
PFDATA.PRG
PFGERAL.PRG
PFREDE.PRG
PROCGUI.PRG
VLIB.PRG
FONTE.PRG

Re: Porque eu uso Harbour.

Enviado: 03 Dez 2009 00:20
por Itamar M. Lins Jr.
É o que já expliquei...
Não precisa dessas linhas

Código: Selecionar todos

set hb_compiler=msvc 
set lib=d:\harbourx\lib\win\msvc 
set include=d:\harbourx\include;c:\projetos\hwgui\include
Eu não sei quais foram suas variaveis na hora de gerar o harbour.
Quando chamamos essa linha:

Código: Selecionar todos

call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" 
[code]
O win-make e hbmk2 já auto detecta o resto.
Remova a lib wvg, se não for usar ou apenas para testes.

Saudações,
Itamar M. Lins Jr.

Re: Porque eu uso Harbour.

Enviado: 03 Dez 2009 01:47
por sygecom
Olá Asimoes,
Tente inverter a sequencia das LIB, deixe a LIB da Hwgui por ultimo.

Re: Porque eu uso Harbour.

Enviado: 03 Dez 2009 06:13
por asimoes
Olá Itamar e Sygecom,

Sigecom:

Eu já tentei inverter a ordem das libs passando para esta ordem:

-lgtwvg
-lgtwvt
-lhwgui
...

Itamar:

As libs gtwvg e gtwvt eu preciso porque o sistema faz uso de funções.
Outra coisa, gerando com bcc não há erro.

Itamat e Sygecom eu já resolvi desta forma:

Eu percebo o seguinte o MSVC é mais exigente com relação a nomes de funções, ele não compila se acha alguém com o mesmo nome, note que ele está reclamando de funções em duplicidade, eu até mexi no código dialog da hwgui renomeando as funções: lpwAlign e nCopyAnsiToWideChar para lpwAlignNew e nCopyAnsiToWideCharNew. regerei a hwgui e o executável foi gerado, agora só tem um problema eu uso esta função abaixo que eu uso para adicionar a fonte visuallib.ttf que eu criei para usar com a visuallib nos meus sistemas, com borland bcc está funcionando 100% com msvc, ela até adicionar a fonte mais por algum motivo ainda que não entedi, troca os caracteres da tabela ascii. Então decide por enquando usar somente o bcc que está gerando a aplicação sem problemas.

Código: Selecionar todos

#pragma BEGINDUMP
#define HB_OS_WIN_32_USED
#define _WIN32_WINNT   0x0400

#include "hbwhat.h"
#include <windows.h>
#include "hbapiitm.h"
#include "hbapi.h"
#include "hbvm.h"
#include "hbstack.h"

//-----------------------------------------------------------------------------
// WINGDIAPI int WINAPI AddFontResourceA(IN LPCSTR);

HB_FUNC( ADDFONTRESOURCE )
{
   hb_retni( AddFontResource( (LPCSTR) hb_parcx( 1 ) ) );
}

//-----------------------------------------------------------------------------
// WINGDIAPI BOOL WINAPI RemoveFontResourceA(IN LPCSTR);


HB_FUNC( REMOVEFONTRESOURCE )
{
   hb_retl( RemoveFontResource( (LPCSTR) hb_parcx( 1 ) ) ) ;
}

#pragma ENDDUMP

[]´s

Re: Porque eu uso Harbour.

Enviado: 03 Dez 2009 08:30
por Maligno
NOTA DA MODERAÇÃO:

Se você observarem a primeira mensagem desse tópico verão que ele foi totalmente desvirtuado de seu teor logo na primeira página. A idéia era discutir sobre as características de compiladores e não pedir ajuda ou discutir técnicas para utilizá-los.

Portanto, vou bloquear o tópico, mesmo à custa de "quebrar" alguma discussão já em andamento. Se quiserem discutir sobre qualquer outro assunto, por favor, criem um novo tópico. Aliás, por favor, evitem "misturar" os tópicos. Isso sempre repercute contra a organização do fórum e, claro, contra os próprios usuários.