qiinfo Posted May 26, 2004 Report Share Posted May 26, 2004 Boa noite Gilmer, Estou tendo certas dificuldades para começar a caminhar no Fwh (xharbour). Estou tentando mudar tudo que eu tinha antes em 16 bits para 32 bits. Estou conseguindo com certo esforço e trabalho romper as barreiras que aparecem, só que tem coisas que estao fora do meu alcance e conhecimento. Veja o problema que estou tentando solucionar e não consigo: Tenho um aplicativo que roda com 1 .exe (884.656kB) + 1 dll (20.545 Kb), tudo compilado com blinker. o arquivo .dll é gerado com a clausula NODELETE pois certas funcoes estao dentro do .EXE e já ficam na memoria para a dll. Preciso gerar esta mesma dll para 32 bits com o ilink32 sem informar as libs do xharbour ,porque se o fizer a dll ficara com mais ou menos 1Mb, sendo que o .exe que já esta na memoria já carregou o xharbour e suas libs. LINHA DE COMANDO QUE USEI ilink32 -Gn -M -m -aa -Tpd -s -c -t -x @dll1.bc MEU FLUXO DE COMPILACAO (DLL1.BC) ======================= c0w32.obj + dll.obj, + dll.dll, + dll.map, + \fwh\lib\FiveHX.lib \fwh\lib\FiveHC.lib + harbour.lib + c:\bcc55\lib\cw32.lib + c:\bcc55\lib\import32.lib + c:\bcc55\lib\psdk\odbc32.lib, ERROS GERADOS QUE NAO PERMITEM GERAR O ARQUIVO .DLL =================================================== Turbo Incremental Link 5.00 Copyright © 1997, 2000 Borland Error: Unresolved external '_hb_stack' referenced from C:\FWH\LIB\FIVEHC.LIB|FFWNDRUN Error: Unresolved external 'WinMain' referenced from C:\BCC55\LIB\C0W32.OBJ Error: Unresolved external '_hb_set' referenced from C:\FWH\LIB\FIVEHC.LIB|MSGS Error: Unresolved external '_hb_symEval' referenced from C:\FWH\LIB\FIVEHC.LIB|CTRLDRAW O ilink32 tem a diretiva para gerar a .dll mesmo com estes erros ? Qual seria a linha de compilacao ? Obrigado e no aguardo, Rossine. Quote Link to comment Share on other sites More sharing options...
evandro Posted May 27, 2004 Report Share Posted May 27, 2004 Olá, Apesar de não ser o Gilmer e nem garoto propaganda do xHarbour comercial, eu uso o xBuild (parte do produto) para gerar o executável e também, quando necessário, gerar DLLs. Nele basta marcar que é para gerar dll e incluir os prgs e mandar gerar. Sem muito parâmetro, sem dificuldade alguma. Isto tem um custo, claro, mas achei que valeu a pena (+ou- R$400,00 em www.xharbour.com.br). Tem também o hbmake (gratuito), mas não sei como utilizá-lo. Através dele também facilita esta tarefa. []s, Evandro G. de Paula Curvelo - MG evandro@skillnet.com.br (Escr. - na Cidade) imortal@skillnet.com.br (Res. - na Roça) Quote Link to comment Share on other sites More sharing options...
gilmer Posted May 27, 2004 Report Share Posted May 27, 2004 Olá, Este erro você esta tendo ao tentar gerar a DLL ? citação: Boa noite Gilmer, Estou tendo certas dificuldades para começar a caminhar no Fwh (xharbour). Estou tentando mudar tudo que eu tinha antes em 16 bits para 32 bits. Estou conseguindo com certo esforço e trabalho romper as barreiras que aparecem, só que tem coisas que estao fora do meu alcance e conhecimento. Veja o problema que estou tentando solucionar e não consigo: Tenho um aplicativo que roda com 1 .exe (884.656kB) + 1 dll (20.545 Kb), tudo compilado com blinker. o arquivo .dll é gerado com a clausula NODELETE pois certas funcoes estao dentro do .EXE e já ficam na memoria para a dll. Preciso gerar esta mesma dll para 32 bits com o ilink32 sem informar as libs do xharbour ,porque se o fizer a dll ficara com mais ou menos 1Mb, sendo que o .exe que já esta na memoria já carregou o xharbour e suas libs. LINHA DE COMANDO QUE USEI ilink32 -Gn -M -m -aa -Tpd -s -c -t -x @dll1.bc MEU FLUXO DE COMPILACAO (DLL1.BC) ======================= c0w32.obj + dll.obj, + dll.dll, + dll.map, + \fwh\lib\FiveHX.lib \fwh\lib\FiveHC.lib + harbour.lib + c:\bcc55\lib\cw32.lib + c:\bcc55\lib\import32.lib + c:\bcc55\lib\psdk\odbc32.lib, ERROS GERADOS QUE NAO PERMITEM GERAR O ARQUIVO .DLL =================================================== Turbo Incremental Link 5.00 Copyright © 1997, 2000 Borland Error: Unresolved external '_hb_stack' referenced from C:\FWH\LIB\FIVEHC.LIB|FFWNDRUN Error: Unresolved external 'WinMain' referenced from C:\BCC55\LIB\C0W32.OBJ Error: Unresolved external '_hb_set' referenced from C:\FWH\LIB\FIVEHC.LIB|MSGS Error: Unresolved external '_hb_symEval' referenced from C:\FWH\LIB\FIVEHC.LIB|CTRLDRAW O ilink32 tem a diretiva para gerar a .dll mesmo com estes erros ? Qual seria a linha de compilacao ? Obrigado e no aguardo, Rossine. id=quote>id=quote> Quote Link to comment Share on other sites More sharing options...
qiinfo Posted May 27, 2004 Author Report Share Posted May 27, 2004 Olá Gilmer, Sim, é quando rodo o ilink32. Este erro acontece porque, eu nao referencio as lib´s do xharbour para diminuir o tamanho da dll. ( o XHARBOUR já esta memoria dentro do .exe por isso que eu nao preciso dele da dll. O fluxo certo para gerar um .EXE seria: c0w32.obj + dll.obj, + dll.dll, + dll.map, + \fwh\lib\FiveHX.lib \fwh\lib\FiveHC.lib + c:\xharbour\lib\rtl.lib + c:\xharbour\lib\vm.lib + c:\xharbour\lib\gtwin.lib + c:\xharbour\lib\lang.lib + c:\xharbour\lib\macro.lib + c:\xharbour\lib\rdd.lib + c:\xharbour\lib\dbfntx.lib + c:\xharbour\lib\dbfdbt.lib + c:\xharbour\lib\dbfcdx.lib + c:\xharbour\lib\dbffpt.lib + c:\xharbour\lib\debug.lib + c:\xharbour\lib\common.lib + c:\xharbour\lib\pp.lib + c:\bcc55\lib\cw32.lib + c:\bcc55\lib\import32.lib + c:\bcc55\lib\psdk\odbc32.lib, e o fluxo certo para gerar uma .DLL seria: c0w32.obj + dll.obj, + dll.dll, + dll.map, + c:\bcc55\lib\cw32.lib + c:\bcc55\lib\import32.lib + c:\bcc55\lib\psdk\odbc32.lib, OK ? Abraços, Rossine. Quote Link to comment Share on other sites More sharing options...
qiinfo Posted May 28, 2004 Author Report Share Posted May 28, 2004 Olá, ----------------------------- Apesar de não ser o Gilmer e nem garoto propaganda do xHarbour comercial, eu uso o xBuild (parte do produto) para gerar o executável e também, quando necessário, gerar DLLs. Nele basta marcar que é para gerar dll e incluir os prgs e mandar gerar. Sem muito parâmetro, sem dificuldade alguma. Isto tem um custo, claro, mas achei que valeu a pena (+ou- R$400,00 em www.xharbour.com.br). Tem também o hbmake (gratuito), mas não sei como utilizá-lo. Através dele também facilita esta tarefa. -------------------------- Evandro, tentei utilizar o hbmake, mas nao soube. Com este xbuild eu consigo: 1) Gerar dlls de 4KB por exemplo ? 2) Acessar dentro da dll as variaveis que estao na memoria criadas anteriormente com o .exe ? 3) usar dll´s estaticas e dinamicas ? 4) PASSAR E RECEBER PARAMETROS DO .EXE PARA A DLL ? Veja um exemplo funcional: ARQ_EXE.PRG =========== #include "fivewin.ch" function main() public VAR1 = "TESTE" ? "ESTOU NO .EXE" ? TESTE_DLL( "OLA MUNDO" ) ARQ_DLL.DLL =========== #include "fivewin.ch" function TESTE_DLL( TEXTO ) ? TEXTO return .F. Abraços, Rossine. Quote Link to comment Share on other sites More sharing options...
evandro Posted May 28, 2004 Report Share Posted May 28, 2004 Olá, Gerar a dll, gerei rapidamente (48K). Agora o acesso a ela, e as outras questões, com não uso dlls, não sei bem como fazer isto. Estou um pouco arrochado hoje e não pude me aprofundar no caso. Enviei a dll gerada para seu e-mail. Daà você pode testar. []s, Evandro G. de Paula Curvelo - MG evandro@skillnet.com.br (Escr. - na Cidade) imortal@skillnet.com.br (Res. - na Roça) Quote Link to comment Share on other sites More sharing options...
qiinfo Posted May 28, 2004 Author Report Share Posted May 28, 2004 Boa tarde Evandro, Para chamar a funcao de dentro do meu .exe devo chamar: ? TESTE_DLL( "OLA MUNDO" ) Onde consigo informaçoes do xbuild. Gostaria de trocar algumas ideias com voce sobre ele. Poderia me enviar um email com seu telefone para conversarmos? Obrigado, Rossine. email: qiinfo@ig.com.br Quote Link to comment Share on other sites More sharing options...
evandro Posted May 28, 2004 Report Share Posted May 28, 2004 Olá, Informações sobre o xBuild - inclusive uma versão demo - você consegue em www.xharbour.com.br. []s, Evandro G. de Paula Curvelo - MG evandro@skillnet.com.br (Escr. - na Cidade) imortal@skillnet.com.br (Res. - na Roça) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.