USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Ajuda Declaração DLL via código em VB6
Scaliburth
BELO HORIZONTE
MG - BRASIL
ENUNCIADA !
Postada em 19/10/2010 15:25 hs            
Caros colegas, boa tarde!!!

Para facilitar, estou migrando algumas rotinas do meu sistema feito em VB6 para execução através de DLL, porém estou apanhando na declaração e acesso as funções desta DLL.

Criei uma DLL com nome de 'IMPRESSOES.DLL' e dentro desta DLL, possui uma classe chamada 'IMPR_TH' e a seguinte rotina de exemplo:
Public Sub ImprimeCabecalho()
   Printer.FontSize = 10
   Printer.Print "Linha1"
   Printer.Print "Linha2"
   Printer.Print "Linha3"
   Printer.Print "Linha4"
   Printer.Print "Linha5"
   Printer.EndDoc
End Sub

Já no projeto em desenvolvimento VB6, declarei num módulo a seguinte expressão:
Public Declare Sub ImprimeCabecalho Lib "IMPRESSOES.DLL" ()

e para chamar a função estou utilizando no formulário, através de um Botão a chamada a rotina
ImprimeCabecalho

Porém, ao executar o programa e pressionar o referido botão ele apresenta o seguinte erro:

Run-time error '453'
Can't find DLL entry point ImprimeCabecalho in IMPRESSOES

Ou seja, consta que não foi possível localizar o ponto de entrada de ImprimeCabecalho na Dll Impressoes. Porém eu já rodei todo o código e não consigo solucionar o problema e todos os nomes referidos estão corretos.

Gostaria muito de declarar através do código, pois terei uma dll para cada tipo de impressora e me facilitaria caso fosse desse jeito ao contrário de declará-la no menu references e criar os objetos depois. Porém, não estou conseguindo identificar o que falta.

Alguem tem alguma consideração a fazer para solucionar o problema???

Desde já agradeço a todos.

Ronan Afonso
   
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
ENUNCIADA !
Postada em 19/10/2010 16:46 hs            
Vc ja fez o teste da dll agrupando num projeto ou usa a dll referenciada no projeto, no ultimo caso vc tem que registrar no regsvr32. e se a dll foi alterada nas propiedades do projeto da dll que vc criou vc tem que colocar compatibilidade de versao ao compilar
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 19/10/2010 17:13 hs            
assim colega

Private Declare Function Imprimir Lib "impressoes.dll" () As Long

Private Sub Command1_Click()
Dim Imprimir As New IMPR_TH
Imprimir.ImprimeCabecalho
End Sub
   
Scaliburth
BELO HORIZONTE
MG - BRASIL
ENUNCIADA !
Postada em 20/10/2010 11:37 hs            
Juan Carlos, registrei a dll e através do referenciamento e criando um novo objeto eu consegui acessar sim. Porém, como disponibilizarei várias dll's que se referem a cada tipo de impressora e o sistema utilizará somente uma das impressoras, pensei que este seria a melhor forma, ou seja, declarando a dll via código e não através da referência, que me daria mais trabalho ainda, pois caso surja uma nova impressora/dll eu teria que compilar novamente o executável.

Acredito que o meu problema está em exportar as funções da DLL mesmo, coisa que não fiz e ainda não manjo direito na elaboração dela. Há esta possibilidade de exportar tendo em vista que criei uma DLL que não é Standard???
   
Juan Carlos R.A
Pontos: 2843
MACEIO
AL - BRASIL
ENUNCIADA !
Postada em 20/10/2010 11:57 hs            
Olha, vc pode colocar nessa dlls todos os tipos de impresora. No projeto vc so vai chamar a referenciada para o tipo de impresora. Se vc não quer mexer no .exe poderia usar com arquivos ini para a impresora selecionada. E so sera necesario compilar a dll una vez mais, e as alterações vc pode referenciar no arquivo.ini.
cabecalhoimpresora1
cabecalhoimpresora2
cabecalhoimpresora3
O exemplo do treze é bom
TÓPICO EDITADO
 
Scaliburth
BELO HORIZONTE
MG - BRASIL
ENUNCIADA !
Postada em 20/10/2010 15:44 hs            
Juan, vou fazer isso sim. Porém, uma outra dúvida, se tiver jeito:
Como eu posso instanciar o objeto de forma dinâmica, ou seja, em tempo de execução, sendo ele vindo de um parâmetro(registro do windows, ini ou BD), ou seja, a classe sendo dinâmica?

Dim Imprimir As New (Parâmetro) 'pois teria várias classes as quais seriam as impressoras
Imprimir.ImprimeCabecalho

Obrigado pela ajuda!!!
Agradeço a todos!!!
TÓPICO EDITADO
 
Página(s): 1/3      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página