как обойтись без def файла?
От: verdina  
Дата: 06.02.08 18:03
Оценка:
кусок кода из моей программы на MFC
HMODULE hM = NULL;
    typedef   __declspec(dllimport) void WINAPI HF(void);
    HF* myF = NULL;
    hM = AfxLoadLibrary("MyDll");//загрузка библиотеки

    if (hM!=NULL)//если загрузили
    {
        myF=(HF*)GetProcAddress(hM,"Hello");//получаем адрес функции
        if (myF!=NULL)
        {
            (*myF)();//вызов функции если удалось

        }
        else
        m_MessageStatic.SetWindowText("Error Load function" );

        AfxFreeLibrary(hM); //выгузка библиотеки
    }
    else m_MessageStatic.SetWindowText("Error load Dll");

если def файла нет то функция GetProcAddress() не видит функцию из dll-ки
есть ли способ обойтись без def файла?




вос сама библиотека что в ней не так?
MyDll.h

#pragma once
#include "stdafx.h"

#ifdef MYDLL_EXPORTS
#define MyExpFunc  extern "C" __declspec(dllexport)
#else
#define MyExpFunc extern "C" __declspec(dllimport)
#endif

MyExpFunc void WINAPI Hello(void);

MyDll.cpp

#include "stdafx.h"
#include "MyDll.h"


#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    

    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

MyExpFunc void WINAPI Hello(void)
{
    MessageBoxA(NULL,"Hello","Hello",MB_OK);
}

Склеил два сообщения в одно, чтобы не размазывать по веткам. — Кодт


10.02.08 04:03: Перенесено модератором из 'C/C++' — Павел Кузнецов
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.