GetProcAddress возвращает 0 в VC++ 7
От: Time Россия  
Дата: 14.06.04 17:01
Оценка:
Учусь создавать и использовать Dll. (предположим в My.Dll необходимио реализовать int MyFunc(int par));
Создание:1. New->Win32 Project (ставлю галку Dll и Export symbols)
2. В My.h обявляю
extern "C" int __stdcall MyFunc(int par);
3. В My.cpp реализую
int __stdcall MyFunc(int par)
{
int MyFunc = par*2;
return MyFunc;
}
4. Компилирую в режиме Release.

Создание приложения (предоположим MyApp):
1. New->Win32 Project;
2. В MyApp.h обявляю прототип функции
typedef int (__stdcall*TMyFunc)(int);
3. В приложении в _tWinMain пишу вызов Dll и функции
(причем меня интересует динамическое связыване, правда статическим тоже ничего не вышло):
HINSTANCE dllHandle = NULL;
TMyFunc MyPtr = NULL;
dllHandle = LoadLibrary("My.dll");
if (NULL != dllHandle)
{
MyPtr = (TMyFunc)GetProcAddress(dllHandle,"MyFunc");
//Так вот dllHandle == 1000000 а MyPtr == 0
if ((NULL != MyPtr))
{
int retVal = MyPtr(3);
}
FreeLibrary(dllHandle);
}
4. Копирую My.dll в папку с MyApp
5. Компилирую MyApp возникает ошибка обращения памяти, т.к. MyPtr ==0
Заранее благодарен, всех Вам благ.
P.S.: В MSDN есть статья (DLLs the Dynamic Way by MicHael Galkovsky)
её автор пишет макрос облегчающие работу, пробовал, не получилось.

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