una ayuda : cargar una dll y usar sus funciones.

Iniciado por SuperNovato, 31 Diciembre 2010, 18:51 PM

0 Miembros y 1 Visitante están viendo este tema.

SuperNovato

una ayuda acerca de cargar una dll y usar sus funciones
tengo este code del .exe en c++

#include <windows.h>

typedef void(*PF)();

int main()
{
HINSTANCE hDll = LoadLibrary("c:\\carga.dll"); // carga la dll
PF Mensaje = (PF)GetProcAddress(hDll, "inicio"); //obtiene el puntero
Mensaje(); // ejecuta la funcion
FreeLibrary(hDll);
return 0;
}





y este es el code de la dll, q esta hecha en vb6 y exportada :


Option Explicit

Public Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long

Public Function inicio()
    MessageBox 0, "me han ejecutado", "holas", 64
    inicio = 1
End Function



el .exe carga la dll y sale el mensaje, pero despues de aceptar el mensaje me sale el error : "la memoria 0x0... hace referencia a 0x0......, no se puede read",  ¿como podria solucionarlo?,  voi a hacer unas dll en vb6 pero se presenta este problema y no se como solucionarlo.

Oblivi0n

Porque haces lo de
typedef void(*PF)();

no lo entiendo  :huh:

SuperNovato

el code lo vi en otro foro : http://www.forosdelweb.com/f14/otra-librerias-dll-370583/
recien estoy aprediendo  c++.
esto vendria a ser una practica.
.¿cual podrá ser el error?

Eternal Idol

VB exporta las funciones con la convencion de llamada stdcall:

typedef void(__stdcall *PF)();
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón