Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Немогу dll сделать никак

1.7K
22 июня 2006 года
ilyes
181 / / 22.02.2006
Вроде бы делаю все по написаному в статье http://www.codenet.ru/progr/bcb/dll.php

делаю так:
Dll.cpp
Код:
#define BUILD_DLL
#include <windows.h>
#include "Dll.h"
#pragma hdrstop
#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
        return 1;
}

//---------------------------------------------------------------------------
extern "C" char* __export getName()
{
return "ilyes";
}


Dll.h
 
Код:
extern "C" char* __export getName();

Main.cpp
Код:
#include "Dll.h"
typedef char* (__stdcall *pGetName)();
...
HINSTANCE dllp = LoadLibrary("Dll.dll");
    if (dllp)
                {
        pGetName getName = (pGetName)GetProcAddress(dllp, "getName");
        if (getName)
                ShowMessage(getName());
        }
        else
                ShowMessage("Косяки");
    FreeLibrary(dllp);

И чето никак :(
13K
22 июня 2006 года
poland
34 / / 16.01.2006
Так в отладчике-то что видно. Не грузится dll? Нет твоего метода? Не правильно возвращает значение getName?
406
23 июня 2006 года
vitaly2003s
481 / / 27.07.2004
А если сделать проще:
//main.cpp
#include "Dll.h"
#pragma comment(lib,"dll.lib")

int main()
{
ShowMessage(getName());

...
}

Правда насчет #pragma comment(lib,"dll.lib") не уверен есть ли такое в BCB - подключение статической библиотеки
246
23 июня 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=vitaly2003s]
Правда насчет #pragma comment(lib,"dll.lib") не уверен есть ли такое в BCB - подключение статической библиотеки[/QUOTE]
Такого в Билдере нет, он игнорирует эту мелкософтовскую директиву. Есть Project|Add to Project|*.lib e.t.c.
246
24 июня 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=GIZMO]Такого в Билдере нет, он игнорирует эту мелкософтовскую директиву. Есть Project|Add to Project|*.lib e.t.c.[/QUOTE]
Прошу прощения - наврал, все работает:(
1.7K
26 июня 2006 года
ilyes
181 / / 22.02.2006
[QUOTE=poland]Так в отладчике-то что видно. Не грузится dll? Нет твоего метода? Не правильно возвращает значение getName?[/QUOTE]

По ходу метод не находит, потому что если if (getName) убрать то ошибка.

[QUOTE=vitaly2003s]
#pragma comment(lib,"dll.lib")
[/QUOTE]

мне надо динамически подключать, без lib
547
26 июня 2006 года
Hydra
488 / / 20.06.2006
посмотри impdef dll.dll
возможно метод не совсем так называется
1
26 июня 2006 года
kot_
7.3K / / 20.01.2000
 
Код:
pGetName getName = (pGetName)GetProcAddress(dllp, [COLOR="Red"][/COLOR]"_getName");
1.7K
26 июня 2006 года
ilyes
181 / / 22.02.2006
[QUOTE=kot_]
 
Код:
pGetName getName = (pGetName)GetProcAddress(dllp, [COLOR="Red"][/COLOR]"_getName");
[/QUOTE]
Урааа! Заработало! Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог