Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2009, 01:19   #1
apromix
PHP, Delphi
Форумчанин
 
Аватар для apromix
 
Регистрация: 07.05.2008
Сообщений: 388
По умолчанию С++: правильный импорт dll

Подскажите, я новичок в C++ (раньше юзал Delphi), как импортировать в С из dll. На Дельфи это делается одной строкой, а на С++ я использую громоздкий код, как его упростить, есть другой метод?

На С++ делаю так:

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    void* hl = LoadLibrary("QBox.dll");
    if(hl) {
       QBoxFunc qbInit = 0;
       qbInit = GetProcAddress(hl, "qbox_Init");
       if(qbInit) {
          int ret = qbInit();
          char msg[64], dig[16];
          lstrcpy(msg, "QBox ret = ");
          itoa(ret, dig, 10);
          lstrcat(msg, dig);
          MessageBox(0, msg, "-=Info=-", 0);
       } else MessageBox(0, "GetProcAddress fail!", "-=Info=-", 0);
       FreeLibrary(hl);
    }
}
На Delphi

Код:
function QBox_Init: Integer; stdcall; external 'qbox.dll' name 'qbox_Init';
...
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(QBox_Init));
end;
Спасибо.
Мыши плакали, кололись, но продолжали жрать кактус...
мои проекты
apromix вне форума Ответить с цитированием
Старый 04.10.2009, 02:28   #2
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

Код:
DWORD GetAddr(const char * dll, const char * func, HANDLE &hh)
{
	HANDLE h = LoadLibraryA(dll);
	if (!h) return -1;
        hh = h;
	DWORD ret = ::GetProcAddress(h,func);
	if (!ret) return -1;
	return ret;
}

int _tmain(int argc, _TCHAR* argv[])
{
        HANDLE h;
	int (*func)(const char *);
	func = &GetAdd("test.dll","Func",h);
	func("aa");
        FreeLibrary(h);
	return 0;
}
ну типо такого не подойдет? короче незя =)
lennon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильный ввод в ячейки mephist Microsoft Office Excel 5 27.05.2009 10:47
Импорт DLL в прогу cowboy Общие вопросы Delphi 5 14.04.2009 13:37
Подскажите правильный RewriteRule (.htaccess) Dj_smart PHP 10 11.01.2009 23:43
Подскажите правильный запрос c группировкой frostyland Microsoft Office Access 2 03.09.2008 10:22
Импорт VB6 DLL в C++ DmF Общие вопросы C/C++ 1 06.03.2008 08:48