| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Создание DLL |
| Автор: Mephisto 26.6.2007, 12:15 | ||||
| Вот, смотрю примеры по созданию dll. Чет не могу понять почему у меня ни один из примеров не работает... Может кто подскажет что я не так делаю? Вот единственный модуль в библиотеке:
Вот как пытаюсь загрузить ее:
В результате этот указатель пустой pfnMyFunction. |
| Автор: _hunter 26.6.2007, 12:20 |
| посмотри depend'ом экспортируется эта функция или нет. возможно перед именем нужно "_" приписать |
| Автор: Mephisto 26.6.2007, 12:22 |
Где взять? |
| Автор: _hunter 26.6.2007, 12:25 |
| он со студией идет (называется depends)... или DEPENDS.EXE поищи... |
| Автор: Alexeis 26.6.2007, 12:36 |
| странное название для библиотеки "TestDLL_NET", может "TestDLL_NET.dll" ? |
| Автор: Mephisto 26.6.2007, 12:37 |
| _hunter, отлично!!!! Прокатило. Только теперь вопрос.... Почему он сделал название функции _MyFunction@4 Добавлено через 42 секунды Alexeis, так пошло. ТОлько название левое у функции |
| Автор: Daevaorn 26.6.2007, 12:49 |
| Mephisto, Предлагаю темы создавать в соответствующих разделах. |
| Автор: Mephisto 26.6.2007, 12:57 |
| Daevaorn, предложение принято. |
| Автор: EnergoHokum 26.6.2007, 14:15 | ||
Потому что нужно имена функций, которые будут торчать наружу, объявлять как
иначе компилятор для обеспечения перегружаемости (так вроде правильно |
| Автор: Mephisto 26.6.2007, 14:18 |
| EnergoHokum, я же так и написал! Добавлено через 2 минуты и 39 секунд Убрал CALLBACK и все нормально стало! Добавлено через 3 минуты и 38 секунд А как мона сделать out параметр???? |
| Автор: EnergoHokum 26.6.2007, 14:55 |
| Кто такой out-параметр? Переменная, которая торчит наружу? Можно создать её в общей памяти (SharedMemory), можно затолкать в руками созданную секцию (это от компилятора зависит), но лучше так не делать, а написать функцию, которая и будет твою переменную отдавать. |
| Автор: WM_SASHA 26.6.2007, 23:31 |
| а как можно оформить библиотечные функции с модификатором CALLBACK,чтобы при вызове не пришлось писать такого GetProcAddress(hInst," _function@12"); ? к примеру это может потребоваться для программ на других языках. |
| Автор: 586 27.6.2007, 03:54 | ||||
можно использовать def-файл, либо использовать опцию компилятора:
??? |
| Автор: Mephisto 27.6.2007, 08:49 | ||
Люди, есть такая функция
А как можна сделать чтоб передавать можно было б некий буфер. А функция внутри длл писала в него некую информацию? Чет неасиливаю. :( |
| Автор: Mephisto 27.6.2007, 09:29 | ||
Вернее у меня получилось, но только вылазит вот такое сообщение... Это .нет
|
| Автор: _hunter 27.6.2007, 10:32 |
| попробуй __cdecl вместо CALLBACK написать. хотя это на вызывающей стороне копать нужно... |
| Автор: Mephisto 27.6.2007, 11:06 |
ОК. СПС. Выручил! |
| Автор: WM_SASHA 6.7.2007, 09:39 |
| а что такое def файл?как их использовать чтобы не пришлось писать так: GetProcAdress(hDll,"_MyFunction@14"); когда нужно : GetProcAdress(hDll,"MyFunction"); покажите пример . |
| Автор: Mephisto 6.7.2007, 10:19 |
| WM_SASHA, Я просто CALLBACK убрал и все вернулось в зад. Осталось прямое имя. def файл не делал... |
| Автор: WM_SASHA 7.7.2007, 05:55 |
| Mephisto, ну а как с CALLBACK?мне это интересно |
| Автор: Mephisto 9.7.2007, 08:44 | ||||||
Я же писал:
Так к названию функции и дополнительная инфа прилагается. А так:
Эфект тот же, но название ровное! |
| Автор: 586 9.7.2007, 13:20 | ||||
def файл:
За подробностями в MSDN. |