Ir para o conteúdo
EneMy

[Resolvido] Problema em carregar uma DLL no VB

Mensagens Recomendadas

EneMy    0
EneMy

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 ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NuGuN    2
NuGuN

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
EneMy    0
EneMy

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..

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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 ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
EneMy    0
EneMy

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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

Jorge Paulino

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade