|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Visual C++ 6.0: Вопрос по DLL... |
|
Visual C++ 6.0: Вопрос по DLL...
|
DANTIST
Сообщения: n/a |
Нужно сделать программу, которая будет искать в определенной директории все DLL-ки и
выводить их список. А потом загружать выбранную. В этих DLL должны быть маленькие игры. При компиляции главной программы не известно сколько будет этих DLL и какие у них будут имена. Реально ли вообще загрузить функцию(класс) из DLL, о которой при компиляции ничего не известно? Все эти DLL например могут экспортировать одну функцию, которая будет рисовать окно игры. Можно ли сделать тоже самое, только с MFC. То есть, чтобы не вручную рисовать окно, а создавать с использованием компонентов и классов MFC? |
|
Отправлено: 20:28, 20-06-2003 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать DANTIST
Цитата:
Функцию обычно выполняют. Описание класса обычно используют для создания его экземпляров. В любом случае, если известен прототип, по которому будет происходить поиск файлов/функций/классов, можно задекларировать это еще до написания первой такой DLL. Например: p = GetProcAddress(hDll, 'MySuperPuperFunction'); PMYSUPERPUPERPROTOTYPE(p)(param1, param2,param3,...); Это если не хочется с интерфейсами связываться и аналогичными решениями. |
|
------- Отправлено: 19:17, 21-06-2003 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
DANTIST
Сообщения: n/a |
Делаю так...
- В DLL пишу: __declspec(dllexport) void MyMessage(void) { MessageBox(NULL, "This Message from DLL!", "!!!", MB_OK); } - В главной программе пишу: __declspec(dllimport) void MyMessage(void); HINSTANCE hDll; FARPROC MyProcAddr; if (( hDll = LoadLibrary("MyDll.dll") != NULL) { MyProcAddr = GetProcAddress(hDll, "MyMessage" if (MyProcAddr != NULL) (MyProcAddr)(); else MessageBox(NULL, "MyMessage address not given!", "Error!", MB_OK); } else { MessageBox(NULL, "MyDll.dll not found!", "Error!", MB_OK); } FreeLibrary(hDll); Что не так? Почему не определяется адрес функции? P.S. Я не подключал .lib файл. |
Отправлено: 02:44, 22-06-2003 | #3 |
Модер Сообщения: 1716
|
Профиль | Сайт | Отправить PM | Цитировать DANTIST
Скорее всего некорректно собираешь MyDll.dll. Depends-ом погляди, что и как там экспортируется из нее в итоге. Если будут лишние сивмолы в имени - поищи mangling на rsdn.ru |
------- Отправлено: 13:56, 22-06-2003 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
.NET - Вопрос по Visual Basic Script и обсуждение. | S1stem | Программирование и базы данных | 3 | 15-04-2009 02:55 | |
Разное - [решено] dwmapi.dll; mpr.dll; shlwapi.dll | Reset5 | Microsoft Windows 2000/XP | 2 | 14-06-2008 16:31 | |
Вопрос по Visual Basic.Net | MrX | Программирование и базы данных | 4 | 01-08-2004 10:45 | |
Вопрос по Visual C++ | Andryxa | Программирование и базы данных | 2 | 24-11-2003 00:05 | |
Visual Studio6.0 Visual FoxPro не могу найти меню Database | Serg170580 | Программирование и базы данных | 1 | 07-04-2003 23:17 |
|