CONSUMIR FUN?ÃO DE DLL NÃO GERENCIADA.

NILSONTRES 28/03/2017 11:50:08
#472839
Queria que minha dll fosse utilizada como a do SAT por exemplo, sem precisar registrar, mas não consigo, da que não foi possível encontrar o ponto de entrada.
Consumo normalmente a função da dll se eu registrar a mesma, mas via dllimport, acontece isso.

[ô]assim esta na dll
Public Function somar(ByVal V1 As Integer, ByVal V2 As Integer) As Integer
Return MsgBox(V1 + V2)
End Function

[ô]assim a declaração
<DllImport([Ô]DLL_TESTE.dll[Ô])> _
Public Shared Function somar(ByVal V1 As Integer, ByVal V2 As Integer) As IntPtr

End Function

[ô]assim a chamada
Classteste.somar(5, 8)

[ô]erro retornado
Não é possível localizar um ponto de entrada denominado [ô]somar[ô] na DLL [ô]DLL_TESTE.dll[ô].

Obrigado.
OCELOT 28/03/2017 13:20:58
#472840
Resposta escolhida
DllImport é para poder usar DLLs não gerenciadas, geralmente feitas em C ou qualquer outra linguagem que permita gerar DLLs que exportem funções, com o .Net não é possível fazer isso.

Mas não entendo o que você diz com precisar registrar, DLLs do .Net não precisam de registro, você só faz a referencia e então só é necessário copiar elas para a mesma pasta do executável, o que se você selecionar a referencia e olhar na janela de propriedades vai ver uma opção [Ô]Copy Local[Ô] que já faz isso pra você.
NILSONTRES 28/03/2017 14:12:04
#472843
Citação:

Mas não entendo o que você diz com precisar registrar, DLLs do .Net não precisam de registro, você só faz a referencia e então só é necessário copiar elas para a mesma pasta do executável, o que se você selecionar a referencia e olhar na janela de propriedades vai ver uma opção [Ô]Copy Local[Ô] que já faz isso pra você.


Eu só consumo uma dll que eu fiz, ela é feita em vb6, talvez por isso precise registrar ?, inclusive a opção copy Local esta como false.
Realmente, a que eu testei feita em .Net, não precisei registrar e a opção esta la=True.
Então deixa de ser necessário eu utilizar o Dllimport, como eu achava que seria necessário.
Obrigado, esclarecido, só vou deixar a preguiça de lado e refazer a dll em .Net.

KERPLUNK 28/03/2017 21:17:18
#472853
Se foi feita com VB6, com certeza é ActiveX e portanto, você precisa sim registrar
NILSONTRES 28/03/2017 23:36:57
#472854
Citação:

Se foi feita com VB6, com certeza é ActiveX e portanto, você precisa sim registrar


Isso mesmo, Obrigado,
Tópico encerrado , respostas não são mais permitidas