Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Офф-топ

Страница: 1 |

 

  Вопрос: Dll & Си Добавлено: 03.09.05 07:18  

Автор вопроса:  Progos | Web-сайт: html-expert.org.ru | ICQ: 311715784 
Подскажите такой вопрос:
Как в Си объявить функцию из библиотеки, как в ВБ
Declare Function ShellExecute& Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd&, ByVal lpOperation$, ByVal lpFile$, ByVal lpParameters$, ByVal lpDirectory$, ByVal nShowCmd&)
Я не имею в виду именно эту функции, она то есть <windows.h>, мне надо знать, как вообще такое делается.
Заранее спасибо

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 HOOLIGAN



Вопросов: 0
Ответов: 1066
 Профиль | | #1 Добавлено: 03.09.05 09:26
Ну так посмотри, как ShellExecute объявляется и сделай по образу и подобию. Неужели так сложно :)

И с каких это пор ShellExecuteA объявляется в windows.h?

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: html-expert.org.ru
 Профиль | | #6
Добавлено: 03.09.05 17:23
Я как раз хотел узнать, как ее декларировать, не имея "либов".
А про то, что ShellExecute не в самом windows.h я и так знал, просто когда его подключаешь, она становится доступна.
Буду искать dll2lib.
Всем спасибо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам