REFERENCIAR MODULO DE DLL VB6 VIA DLLIMPORT

NILSONTRES 20/08/2015 14:22:40
#450272
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 ?
NILSONTRES 21/08/2015 08:27:17
#450302
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
OCELOT 21/08/2015 10:20:05
#450306
Resposta escolhida
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
NILSONTRES 21/08/2015 10:36:06
#450307
Ocelot,
Não é vb6 essa do exemplo.
é vb.net mesmo
OCELOT 21/08/2015 17:51:33
#450337
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
NILSONTRES 21/08/2015 20:16:27
#450342
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.
OCELOT 22/08/2015 10:38:00
#450355
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.
NILSONTRES 22/08/2015 12:25:25
#450357
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