| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Создание DLL |
| Автор: NT_USER 18.11.2006, 09:38 |
| Есть такое дело. Помогите, please, создать DLL (не MFC), которую можно динамически загружать приложением. Компилятор: Microsoft Visual C++ 6.0. Потому что как я ни делаю, функция GetProcAddress возвращает NULL... |
| Автор: Partizan 18.11.2006, 11:14 |
| приведи полный код..а там уже будем разбираться где у тебя бага... |
| Автор: Earnest 20.11.2006, 17:04 |
| Скорее всего, проблема не в создании DLL (если DLL создается и загружается - все нормально), а в определении функции. 1) Функцию, которую ты желаешь добывать через GetProcAddress, обязательно надо экспортировать. 2) Имя, передаваемое в GetProcAddress, должно соответсвовать т.н. декорированному имени, под которм функцию знает линкер. |
| Автор: Partizan 20.11.2006, 17:25 |
| гмм....мож чел LoadLibrary не вызывает? |
| Автор: NT_USER 27.11.2006, 12:01 |
| Спасибо за помощь! Я разобрался. Дело в том, что надо в функции GetProcessAddress писать не то имя, в котором оно у нас в исходнике DLL, а в искажённом. Например, если в исходнике MyFunction, то в GetProcessAddress будет что-то типа ???@MyFunction@@@??? и т.д. |
| Автор: Nastya 27.11.2006, 12:47 |
| extern "C" - поставь тогда можешь писать нормальное имя, только всякие с++ -сные чтучки типа перегрузки не применишь |
| Автор: Любитель 27.11.2006, 16:59 |
| Как вариант - *.def - файлы. |