![]() |
|
Модераторы: bsa |
![]()
|
|
| guram |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 21.6.2007 Где: Киев Репутация: нет Всего: нет |
Здравствуйте,
Мне в наследсство достались исходники dll. Исходники представляют из себя набор классов, некоторые методы которых експортируются в dll Несколько важных, на мой взгляд моментов: .h файл
.cpp файл
После сборки, просмотрщиком окрываю dll и в списке функци вижу следующее: public: int __thiscall Protocol::InitCOM(int, int) Скажите пожалуйста, а вот как теперь этот метод мне вызвать из приложения, которое делается при помосчи C++ Builder? Спасибо! Это сообщение отредактировал(а) guram - 3.6.2009, 15:51 |
||||
|
|||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 10 Всего: 33 |
guram, Экспортировать нужно класс, а не его методы.
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| guram |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 21.6.2007 Где: Киев Репутация: нет Всего: нет |
А Вы бв не могли привести пример, пожалуйста.
Но также вопрос остается, а каким образом работать с классом из приложения написанном при помощи C++Builder. Спасибо! |
|||
|
||||
| jonie |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
пример в аттаче.
только переименуйте расширение на 7z.
вот что у меня борманд сгенил (builder6):
Это сообщение отредактировал(а) jonie - 3.6.2009, 19:35 Присоединённый файл ( Кол-во скачиваний: 5 )
bormand.7z.doc 14,76 Kb-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
-дубль*
Это сообщение отредактировал(а) jonie - 3.6.2009, 19:33 -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Если сама dll собиралась в Borland, то нужно в исходниках
Потом компилировать с приложением, а на этапе линковки дать ему import library (ее можно сделать из самой dll с помощью утилиты implib, или взять то, что получится в процессе cборки dll, IMHO Borland ее делает) Если dll делалась не Borland (например VS), то никак - у них объектная структура разная Можно сделать COM объект (сервер), тогда будет работать где угодно |
||||
|
|||||
| guram |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 21.6.2007 Где: Киев Репутация: нет Всего: нет |
Библиотека собиралась не в Borland а в VS.
Приложение, которое будет использовать библиотеку планировалось разработывать при помощи Borland. Можно услышать ваше мение по поводу следующего: В хедере dll, где обявлены классы описать функцию
В таком случаи, библиотека подключается при помощи
Но правильно ли это? Спасибо! Это сообщение отредактировал(а) guram - 4.6.2009, 13:46 |
||||
|
|||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
В dll нужно добавить:
В Borland можно испльзовать через библиотеку импорта, созданную implib или LoadLibrary(). Но гарантии что будет работать нет (могут быть конфликты стандартных библиотек Borland C++ и Visual C++). Память выделенная в dll должна удалаться в dll Файл открытый в dll должен читаться, писаться и закрвываться в dll и т.д. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Готовтесь к многочисленным граблям |
|||
|
||||
| guram |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 21.6.2007 Где: Киев Репутация: нет Всего: нет |
Пытаюсь использовать функции по указанному алгоритму:
Но так и не получаю корректного ответа. Бвть может ошибаюсь где-то. Зарание огромное спасибо! |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
пример в аттаче.
обратите внимание на наличие файла def в проекте и отсуствие DLLEXPORT директив в адаптере. __declsprec(dllexport) + extern "c" создают несколько иную именуую структуру (во первых это подчеркивание перед экспортируемыми символами, во вторых через @ прописан размер параметров в байтах). Это сообщение отредактировал(а) jonie - 4.6.2009, 18:53 Присоединённый файл ( Кол-во скачиваний: 9 )
VS2Bormand.7z.doc 30,65 Kb-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| guram |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 21.6.2007 Где: Киев Репутация: нет Всего: нет |
jonie, спасибо Вам.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |