Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импорт из DLL, GetProcAddress - возвращает 0 
:(
    Опции темы
bel_nikita
Дата 7.2.2005, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 4
Всего: 47



Не могу импортировать функции из DLL:
Код

class cPower
{
public:
 typedef int  F32x_STATUS;
 //enum Power{ OFF, ON = !OFF };
 enum Command{ SETRELAY = 0x01, REQUEST };

 cPower(const char* pDllNameFile = "USBdll.dll")
 {
   m_hDllFile = ::LoadLibrary(pDllNameFile); // загружаем - все ок
   if ( m_hDllFile )
   {
     Read  = (int (__cdecl*)(unsigned char* const))::GetProcAddress(m_hDllFile,"read4"); // импортирую - фига! Возвращает NULL!!!!
     if ( Read == NULL )
     {
       DWORD Error = ::GetLastError();
     }
     Write = (int (__cdecl*)(unsigned char* const))::GetProcAddress(m_hDllFile,"write4");
   }
 };
 
 ~cPower()
 {
   ::FreeLibrary(m_hDllFile);
 };
private:
 HMODULE m_hDllFile;
 F32x_STATUS (CDECL *Read )(BYTE* const);
 F32x_STATUS (CDECL *Write )(BYTE* const);
};



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
oleg1973
Дата 7.2.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



а функция то есть такая?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 7.2.2005, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 4
Всего: 47



smile
есть

.def файла не было smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
IEZ
Дата 12.2.2005, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



bel_nikita Библиотека твоя?


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
Да гость я...
Дата 16.2.2005, 06:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Действительно, поначалу бы не помешало проверить чего экспортируется из библиотечки, пользуя утилиту Dumpbin:

Dumpbin <name.dll> /EXPORTS

Также для ясности можно было бы объявить тип указателя на ваши ф-ции например как:

Код

typedef int (__cdecl *FooPtr)(unsigned char* const);

Тогда атрибуты класса примут совсем простой вид:
Код

FooPtr Read;
FooPtr Write;

А операция получения адреса ф-ций соответственно:

Код

Read  = (FooPtr) ::GetProcAddress( m_hDllFile,"read4");
Write = (FooPtr) ::GetProcAddress( m_hDllFile,"write4");


Конечно ясен хрен, что данная запись принципиально ничего изменить не может, но кто знает...

Ну, а чего GetLastError() говорит?
  Вверх
_hunter
Дата 16.2.2005, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 13
Всего: 98



насколько я понял, проблема уже решена smile


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
bel_nikita
Дата 16.2.2005, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 4
Всего: 47



Решена. И уже давно smile
Я же говорю *.def файла не было


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.