кусок кода из моей программы на 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++' — Павел Кузнецов