DLL do Biulder C++ no Visual Studio C 2008

Programação C em geral

Moderadores: 51, guest2003

DLL do Biulder C++ no Visual Studio C 2008

Mensagempor lasfclestat » 28 Out 2009 13:29

Prezados, boa tarde, estou tentando ler uma dll, no qual eu não tenho o codigo fonte dela, estou utilizando o visual studio C 2008... Eu sei que a DLL foi desenvolvida no builder C++.

Eu estou conseguindo carregar a DLL (eu acredito) porém não consigo acessar a função dela...

Abaixo esta o codigo que eu estou utilizando

Código: Selecionar todos
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

typedef void (__cdecl *MYPROC_V)(void);


VOID main(VOID)
{
   //string endd;

    HINSTANCE hinstLib;
    MYPROC_V C_Inicia;

    // Carrega arquivo DLL
   hinstLib = LoadLibrary(TEXT("DLL_Client.dll"));   

    if (hinstLib != NULL)
    {            
        printf("<Carregou...>\n\n");
      
   // Obtém o ponteiro da função
   C_Inicia = (MYPROC_V) GetProcAddress(hinstLib, "Inicia");
   
   if ( (C_Inicia==NULL) )
        {
      printf("ERRO: nao foi possivel achar a funcao na DLL\n\n");
           //       FreeLibrary(hinstLib);
        } 
      else
      {
         printf("<Conectou...>\n\n");
         printf("<OK!!!>\n");
         // Descarrega arquivo DLL
   //      FreeLibrary(hinstLib);
      }
    }
   else
    {
      printf("ERRO: não foi possível carregar a DLL\n\n");
   }
                   
}


Alguem tem alguma sugetão do que pode estar causando esse erro???
//Sempre mostra a mensagem ERRO: nao foi possivel achar a funcao na DLL

obrigado...
"Se existe algo como repousar em nome da verdade. Então vós e teus amados, qualquer que sejam as dificuldades, não devem ficar separados indefinidamente!"

Ferrari Caim Lestat
lasfclestat
Bit
 
Mensagens: 47
Registrado em: 29 Jan 2008 15:48
Localização: Campinas

Re: DLL do Biulder C++ no Visual Studio C 2008

Mensagempor andre_luis » 28 Out 2009 16:28

lasfclestat,

Será que essa DLL não possui nenhuma outra dependencia ?

Os pacotes do Delphi e Builder costumavam depender de alguns outros arquivos, além da DLL. Se for esse o caso, essa função pode estar dentro de um desses arquivos.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor lasfclestat » 28 Out 2009 17:02

Certo, entendi..

A empresa que me passou essa dll, me passou outras também que são chamas por essa dll principal, como as função que eu irei chamar estão dentro desta dll principal, eu importei apenas ela, vou tentar importar as outras e ver o que acontece...

Essa empresa também me deu um fonte que eles fizeram para testa-la, porem esse fonte está em builder C++, e eu não tenho esse compilador...

Obrigado

[]s
Lucas
"Se existe algo como repousar em nome da verdade. Então vós e teus amados, qualquer que sejam as dificuldades, não devem ficar separados indefinidamente!"

Ferrari Caim Lestat
lasfclestat
Bit
 
Mensagens: 47
Registrado em: 29 Jan 2008 15:48
Localização: Campinas

Mensagempor lasfclestat » 29 Out 2009 09:33

Resolvido o problema, na verdade eu não precisei chamar as outras dll...

O que eu precisei foi mudar o ponteiro de chamada da minha função

Código: Selecionar todos
C_Inicia = (MYPROC_V) GetProcAddress(hinstLib, "@Inicia");


Pelo programa Dependency Walker eu consegui ver que o nome pelo qual eu precisava chamar minha função...

Obrigado....
"Se existe algo como repousar em nome da verdade. Então vós e teus amados, qualquer que sejam as dificuldades, não devem ficar separados indefinidamente!"

Ferrari Caim Lestat
lasfclestat
Bit
 
Mensagens: 47
Registrado em: 29 Jan 2008 15:48
Localização: Campinas


Voltar para Visual C++/C/C++/C#

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x