REFERENCIAR MODULO DE DLL VB6 VIA DLLIMPORT
Tenho uma dll, ela foi feita no vb6, consigo acessar as funções que estão nessa dll referenciando ela eu meu projeto, chamo assim:
dim var as new minhadll.Nomedomodulonovb6dadll
var.funçaoqueestanomodulo
Mas se tentar via DllImport,
Diz que não encontra as funções.
Queria poder chamar as funçoes na dll, tipo como faço com a da daruma por exemplo.
Alguma dica ?
dim var as new minhadll.Nomedomodulonovb6dadll
var.funçaoqueestanomodulo
Mas se tentar via DllImport,
Diz que não encontra as funções.
Queria poder chamar as funçoes na dll, tipo como faço com a da daruma por exemplo.
Alguma dica ?
Vou simplifiacar:
Na dll esta assim:
Public Class Teste_dll
Public Function Teste(ByVal Mensagem As string) As string
Return Mensagem
End Function
End Class
No formulario de teste:
Imports System.Text
Imports System.Runtime.InteropServices
Namespace NAGCLASS
Public Class NAG
<DllImport([Ô]Nagver.dll[Ô])> _
Public Shared Function Teste(ByVal Mensagem As String) As String
End Function
End Class
End Namespace
E A chamada assim.
Dim Testando As String
Testando = NAG.Teste([Ô]Minha Mensagem[Ô])
MsgBox(Testando)
O erro que me retorna é que não foi possivel encontrar o ponto de entrada com o nome Teste na dll Nagver.dll
Na dll esta assim:
Public Class Teste_dll
Public Function Teste(ByVal Mensagem As string) As string
Return Mensagem
End Function
End Class
No formulario de teste:
Imports System.Text
Imports System.Runtime.InteropServices
Namespace NAGCLASS
Public Class NAG
<DllImport([Ô]Nagver.dll[Ô])> _
Public Shared Function Teste(ByVal Mensagem As String) As String
End Function
End Class
End Namespace
E A chamada assim.
Dim Testando As String
Testando = NAG.Teste([Ô]Minha Mensagem[Ô])
MsgBox(Testando)
O erro que me retorna é que não foi possivel encontrar o ponto de entrada com o nome Teste na dll Nagver.dll
DllImport é apenas para DLLs que exportam funções nativas estilo C, o VB6 cria DLLs COM, não é possÃvel chamar este tipo de DLL com o DllImport
Ocelot,
Não é vb6 essa do exemplo.
é vb.net mesmo
Não é vb6 essa do exemplo.
é vb.net mesmo
No seu primeiro tópico você dizia que a DLL era do VB6.
De qualquer forma, por padrão não tem como usar estes métodos assim pois uma DLL feita no .Net não exporta funções nativas, existe uma ferramenta que permite fazer isso, eu nunca a usei mas é bem simples, você basicamente marca um método de algum modulo com o atributo DllExport que depois ela pode ser usada com o DllImport
Porém ela só está disponÃvel para o VS.Net 2010 ou superior, e não funciona com as versões Express, pois ela é distribuÃda pelo NuGet e o mesmo não está disponÃvel para as versões Express, eu não sei dizer se existe alguma forma de usa-la com estas versões.
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
Porém isso só faz sentido se você for usar esta DLL em alguma outra linguagem, não faz sentido usar isto com o próprio .Net
De qualquer forma, por padrão não tem como usar estes métodos assim pois uma DLL feita no .Net não exporta funções nativas, existe uma ferramenta que permite fazer isso, eu nunca a usei mas é bem simples, você basicamente marca um método de algum modulo com o atributo DllExport que depois ela pode ser usada com o DllImport
Porém ela só está disponÃvel para o VS.Net 2010 ou superior, e não funciona com as versões Express, pois ela é distribuÃda pelo NuGet e o mesmo não está disponÃvel para as versões Express, eu não sei dizer se existe alguma forma de usa-la com estas versões.
https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
Porém isso só faz sentido se você for usar esta DLL em alguma outra linguagem, não faz sentido usar isto com o próprio .Net
Ok,
Então, eu queria utilizar assim para não ter que referenciar no projeto, e assim não ter a obrigação de registrar a dll na maquina do cliente, da mesma forma como fazemos com a do SAT e da Daruma por exemplo.
Então posso entender que essas dll[ô]s, Daruma e Sat não são feitas em .net ? Pois trabalham dessa forma.
Então, eu queria utilizar assim para não ter que referenciar no projeto, e assim não ter a obrigação de registrar a dll na maquina do cliente, da mesma forma como fazemos com a do SAT e da Daruma por exemplo.
Então posso entender que essas dll[ô]s, Daruma e Sat não são feitas em .net ? Pois trabalham dessa forma.
Se a DLL for feita no .Net ela não precisa de registro, só precisa ser copiada na mesma pasta do executável.
Se a DLL for do VB6 não tem como, DLLs COM precisam do registro.
Estas DLLs como a da Daruma são feitas provavelmente em C, ou talvez Delphi, se não me engano o Delphi tem também como exportar funções da DLL para serem chamadas desta forma.
Se a DLL for do VB6 não tem como, DLLs COM precisam do registro.
Estas DLLs como a da Daruma são feitas provavelmente em C, ou talvez Delphi, se não me engano o Delphi tem também como exportar funções da DLL para serem chamadas desta forma.
Citação:Se a DLL for feita no .Net ela não precisa de registro
Hum... Realmente, essa dll que utilizo atualmente, eu fiz no vb6, achava que mesmo eu transcrevendo ela para .net precisaria de registro.
Obrigado OCELOT.
Você estará de volta em Metal Gear Solid: The Phantom Pain ?
Tópico encerrado , respostas não são mais permitidas