Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dll динамическое подключение, проблема с LoadLibrary 
V
    Опции темы
ALXP
  Дата 9.7.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.2.2008
Где: Левое полушарие Л уны

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



Столкнулся с траблой АААААААААА  smile  smile 

Проблема вот в чем. Создал ДЛЛ в Студии2005, ДИНАМИЧЕСКИ ПОДКЛЮЧАЮ К ПРОЭКТУ
в билдере.

Код

HMODULE hLibHandle = LoadLibrary("MyDll.dll");


Меня волнует только hLibHandle  smile 

ВСЕ РАБОТАЕТ ПРЕКРАСНО , hLibHandle при запуске проги получает хендл на мою ДЛЛ,
и далее я проверяю 
Код

if ( hLibHandle )
 то соответственно выполняю функции из ДЛЛ,

 НО ЭТО ПРОИСХОДИТ ТОЛЬКО В ЭТОЙ ВИНДЕ ГДЕ Я ПИШУ КОД.

Я не использую lib, мне это не надо. Только динамически беру файл длл и беру из него функции

Взял получивхийся экзешник(нормально скомпиленый не требующих модулей и т.п.) и свою ДЛЛ.
Кидаю в любую папку и запускаю прогу, длл берется и выполняется.

Беру эту папку и копирую на пругой комп, запускаю там, прога работает ничего не требует,
но как только нажимаю кнопоску чтобы подключилась длл, ХЕНДЛ не создается, он НУЛЛ.

Что можно с этим сделать. Почему LoadLibrary на других машинах не возвращает хендл длл?????




PM MAIL ICQ   Вверх
Lazin
Дата 9.7.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(ALXP @  9.7.2008,  14:27 Найти цитируемый пост)
Беру эту папку и копирую на пругой комп, запускаю там, прога работает ничего не требует,
но как только нажимаю кнопоску чтобы подключилась длл, ХЕНДЛ не создается, он НУЛЛ.

это потому-что dll зависит от runtime library, при попытке загрузить библиотеку, сначала загружаются библиотеки из таблицы импорта, если что-то загрузить не удается библиотека не загружается, установи на другом компе visual studio redistributable package, либо используй статическую компоновку (ProjectPropertys - C++ - Code Generation - Runtime Library - Multitraded(debug) library)
PM MAIL Skype GTalk   Вверх
ALXP
Дата 9.7.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.2.2008
Где: Левое полушарие Л уны

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



Спасибо. Так теперь чтобы разобраться.

1) Я пишу на билдере. 

2) (ProjectPropertys - C++ - Code Generation - Runtime Library - Multitraded(debug) library) так понимаю мне надо установить в студии и скомпилить заново ДЛЛ? ТАК?

3) visual studio redistributable package - это типа пакетик, но где его взять, с сайта мелкомягких?
и если выполнить пункт 2) то 3) делать ненадо ???

4) Делая пункт 2) в настройке увидел такую штуку 
   Multi-threaded (/MT)
   Multi-threaded Debug (/MTd)
   Multi-threaded DLL (/MD) - то что у меня стояло
   Multi-threaded Debug DLL (/MDd) - это то что надо выбрать ТАК?
PM MAIL ICQ   Вверх
ALXP
Дата 9.7.2008, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.2.2008
Где: Левое полушарие Л уны

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



Скачал visual studio redistributable package для студии 2005 не SP1

Скомпилил ДЛЛ с тем параметром , не помогло . 

 smile  Куда еще смотреть? что ставить? чтобы ДЛЛ ничего не требовала кроме себя любимой?
PM MAIL ICQ   Вверх
Lazin
Дата 9.7.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 18
Всего: 154



Цитата(ALXP @  9.7.2008,  14:55 Найти цитируемый пост)
2) (ProjectPropertys - C++ - Code Generation - Runtime Library - Multitraded(debug) library) так понимаю мне надо установить в студии и скомпилить заново ДЛЛ? ТАК?


нужно скомпилить с параметром Multi-threaded (/MT) или (/MTd) для дебажной версии

Multi-threaded (/MT) - статическая компоновка
Multi-threaded Debug (/MTd) - статическая отладочная версия библиотеки
Multi-threaded DLL (/MD) - динамическая библиотека
Multi-threaded Debug DLL (/MDd) - динамическая отладочная версия runtime библиотеки

Добавлено через 2 минуты и 2 секунды
кстати, возможно DLL тянет за собой еще что-нибудь кроме rtl
PM MAIL Skype GTalk   Вверх
ALXP
Дата 10.7.2008, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 6.2.2008
Где: Левое полушарие Л уны

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



 smile  Да Lazin спасибо вам огромное. Делаю МТ и посмотрел что там прописались два либа мне ненужных. 

Я удалил эти либы из линкера и собрал MD все заработало после установки redistrib 2005 пакета.

Посмотрел в таблицу импорта MT, да все грузится внутрь dll  smile 

Спасибо задача решена  smile  smile  smile  smile  smile  smile  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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