Страница: 1 |
Страница: 1 |
Вопрос: Dll & Си
Добавлено: 03.09.05 07:18
Автор вопроса: Progos | Web-сайт:
Подскажите такой вопрос:
Как в Си объявить функцию из библиотеки, как в ВБ
Заранее спасибо
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #1
Добавлено: 03.09.05 09:26
Ну так посмотри, как ShellExecute объявляется и сделай по образу и подобию. Неужели так сложно
И с каких это пор ShellExecuteA объявляется в windows.h?
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 03.09.05 10:57
Вот и я был удивлен... Но при одном только windows.h у мня ShellExecute была найдена
ЗЫ
проще получить адрес и вызвать функцию по указателю, чем кобениться с декларацией...
Номер ответа: 3
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #3
Добавлено: 03.09.05 11:07
Находит потому, что в windows.h есть строка #include <shellapi.h>
декларируется тоже весьма просто:
DWORD __stdcall AddLeftBorder (HMENU hMenu, LPVOID DrawCallback, BOOL bRedraw);
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 03.09.05 13:00
Угу.
Очень просто.
Только получишь unresolved external reference.
Функции в C++ объявляются в .h, но для того, чтобы ими можно было воспользоваться без GetProcAddress, есть файлы .lib, которые получаются при компиляции библиотеки. Линкер использует их для разрешения имён.
Если разработчики некой библиотеки не приложили к ней файлы .h и .lib, то используется такая библиотека через GetProcAddress.
Номер ответа: 5
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #5
Добавлено: 03.09.05 16:09
unresolved external symbol, а не reference
вопрос был не где взять функцию, она уже есть в либе, а как декларировать.
А то, что нужно
#pragma comment(lib, "mylib.lib" - это и ежу понятно.
Если нет lib-файла, можнл воспользоваться dll2lib, и получить свой .lib. И не париться с LoadLibrary/GetProcAddress.
Номер ответа: 6
Автор ответа:
Progos
ICQ: 311715784
Вопросов: 39
Ответов: 157
Web-сайт:
Профиль | | #6
Добавлено: 03.09.05 17:23
Я как раз хотел узнать, как ее декларировать, не имея "либов".
А про то, что ShellExecute не в самом windows.h я и так знал, просто когда его подключаешь, она становится доступна.
Буду искать dll2lib.
Всем спасибо!