Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ranniere Silva

[Resolvido] Dll C em VB.NET

Recommended Posts

Bom Dia a todos,

Estou desenvolvendo uma aplicação em vb.net que irá consumir uma DLL em C, mas estou com problemas no tipo de valor.

Porque eu consigo usar a DLL normalmente ela não dá nenhum tipo de erro, apenas o valor que deveria trazer, por exemplo, 51 trás um número 36928290824.0. Queria saber se existe alguma diferença nos tipos de dados entre C e .NET? E também como posso fazer para funcionar minha DLL de forma correta.

 

OBS.: A Mesma dll eu usando o vb6 consigo utilizar sem nenhuma anomalia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está usando o DllImport?

http://en.csharp-online.net/CSharp_FAQ:_Ho...port_to_work%3F

 

Coloque aqui como você está fazendo.

 

Opa Oenning,

Consegui resolver! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Foi pura falta de atenção, pois eu esqueci que para o vb.net tudo que era Long no vb6 virou Integer e tudo que era Integer virou Short.

Fiz as alterações e agora estou conseguindo pegar os valores corretos.

 

Mas para ajudar outras pessoas vou deixar o processo que eu estava fazendo!

Esse é o funcional para VB6:

Declare Auto Function OpenComm Lib "Cdll.dll" Alias "?open_comm@@YGHH@Z" (ByVal PortComm As Integer) As Integer

 

Esse é alterado para o VB.NET:

Declare Auto Function OpenComm Lib "Cdll.dll" Alias "?open_comm@@YGHH@Z" (ByVal PortComm As Short) As Short

 

 

Esse foi só um pedaço, mas todas minhas outras funções são integer ou long.

 

Mas Oenning, surgiu uma dúvida.

Eu não conheço esse processo de dllimport, mas será que vale a pena eu utilizar na minha aplicação?

Pois como eu disse não tenho o fonte dessa DLL que está em C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm, não conhecia essa maneira de chamar dll em C.

Usando o DllImport você apenas precisa da assinatura dos métodos (nome, parâmetros etc).

Se você não tem isso, você não tem como usar a Dll, mas acho que o resultado vai ser o mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.