• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

EneMy

[Resolvido] Problema em carregar uma DLL no VB

19 mensagens neste tópico

Ola pessoal, eu estou tendo problemas em carregar uma DLL com o Visual Basic.

Quando eu tento carregar aparece o erro:

Run-time error '49': Bad DLL calling conversion

A declaração que estou usando e essa:

Public Declare Sub SR Lib "HookDll.dll" (ByVal Width As Integer, ByVal Height As Integer)

E o codigo e esse:

Call SR(1024, 768)

Na DLL esta assim:

HOOKDLL_API VOID SR(INT Width,INT Height)
{
g_XRES = Width;
g_YRES = Height;
}

Alguem poderia me ajudar ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas...

Esse erro normalmente tem a ver com o tipo de dos argumentos que estas a passar para a função, como por exemplo os tipos das variáveis não serem iguais, etc. Mas parece que esta tudo bem... Experimenta trocar o tipo das variáveis ou assim. Sinceramente assim à primeira vista não estou a ver qual é o problema ao certo  :P

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Por acaso o DLL é um COM Interop que criaste em C++/C# ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não e uma DLL normal criada em C++

E nela tem outras funções que estão funcionando so essa que não tah exemplo:

VB :

Public Declare Function IH Lib "HookDll.dll" () As Boolean

C++ DLL:

HOOKDLL_API BOOL IH()

{

g_KBHook = SetWindowsHookEx(WH_KEYBOARD, KBHookProc, ghModule, 0);

if( g_KBHook == NULL ){

return FALSE;

}

return TRUE;

}

Tah dificil viu, ja to achando que vou ter que converter a source da DLL para um Class Module do VB =/

@NuGuN

Eu tentei trocar por todas variaveis possiveis e nada, tambem tentei tirar o ByVal..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tem como como eu vo add aparece a mensagem:

"Can´t add a referencia to the specified file".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Humm mais umas questões:

1 - O DLL está registado no sistema (regsvr32.exe) ?

2 - O DLL está a funcionar, ou seja, já o testaste na liguagem que foi criado ?

3 - Caso não seja este o problema podes mostrar o código ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
E tentaste como COM e .NET ?

ahh eu não interpretei direito sua pergunta.. Eu não sei como criar uma dll no c++.net com COM..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando adicionas referências podem ser do tipo .NET ou COM. Se não estiverem instaladas fazes o browse e vais buscar o teu ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu ja tentei isso, mais a DLL não tem COM. Eu queria saber como criar uma DLL no .net que tenha COM ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um.. Eu tentei usar esse COM Interop mais deu o seguinte erro:

63437408nk7.gif

Olha.. Desisto dessa DLL, vou tentar transformar o source do c++ em vb.

Muito Obrigado pela ajuda jpaulino.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por falta de informação do utilizador e por existirem respostas aceitáveis à pergunta efectuada, esta questão foi marcada como resolvida.

Jorge Paulino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora