![]() |
|
![]() ![]() ![]() |
|
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Написл DLL на VS2005 динамически загружаю ее из C++Builder 6.
Нормально вызываются экспортируемые ф-ии. Проблема: Одна из ф-ий возвращает указатель на объект моего класса, далее я работаю с этим указателем и вызываю его методы, проблема в том, что в методы приходят явно испорченные значения. В чем может быть дело ? -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
А кто сказал что можно возвращать объекты из программы или из Dll? Сам класс в Dll и приложении это не один и тот же класс. Класс наверняка не экспортировался, разные модули по разному компилируют и собирают один и тот же код. Могут быть особенности оптимизации или же неявное использование RTTI или других встроенных механизмов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Тогда как можно поступить в этом случае ?
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
chaos |
|
||||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
я говорю ![]() в чем собственно проблема? интерфейс о ктором знает и длл и апликация
длл
приложение
Это сообщение отредактировал(а) chaos - 17.6.2009, 06:32 |
||||||||
|
|||||||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
chaos, у меня практически такойже код, но вот только проблема в том, что о ноткомпилирован под VS2005, а DLL вызываю из C++Builder, думаю в этом проблема. Вот и хотелось бы узнать, как можно вызывать методы из такой DLL.
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 1 Всего: 44 |
тут еще имеет значение что методы длл принимают в качестве параметров например если метод принимает CString то что передавать из кода написаного на билдере я не знаю ![]() приведи примеры методов, те их декларации |
|||
|
||||
Artemon |
|
||||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Использование:
Это сообщение отредактировал(а) Artemon - 17.6.2009, 10:40 -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
Alexeis описал проблему. Обьект возвращать можно, в случае если обе программы пишутся на том же компиляторами, компилируются теми же опциями. И еще много "ЕСЛИ". Проблемных примеров тысяча. что вам известно о vtable? В стандарте об этом ничего не сказано...следовательно размеры обьектов могут различаться? Могут! Разные выравнивания структур могут быть? Могут! Об этом тоже стандарт молчит. Как насчет overhead -а при выделениях памяти? Продолжать можно долго. Вообщем нежелательно этим заниматся. Добавлено через 1 минуту и 53 секунды писать программу и DLL на одном и том же компиляторе ![]() |
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Да, это выход, но чтобы к примеру на VS2005 + MFC написать сложный интерфейс - нужно убить кучу времени. Ладно пойду другим методом: Заведу глобальную переменную класса внутри DLL И буду ее дергать только через экспортируемые ф-ии DLL. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
ну так напишите Длл на билдере, в чем проблема?
а что это изменит? |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
как на счет прикрутить WinForm или QT ![]() Кстати - в свое время я прикручивал библу, но статически. Добавлено через 4 минуты При условии что есть *.lib исходной библиотеки. используем тузлу coff2omf.exe (вместе с Билдером постовляется) - из консоли coff2omf vs.lib vs.tmp и затем меняем vs.tmp на vs.lib и соединяем с проектом в Билдере. Мало ли - вдруг поможет. |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Даже если версия компилятора совпадает, это не гарантия что всегда будет работать. Гарантия правильной работы будет только в случае если класс экспортируется. Может будет, может нет. Нельзя программировать надеясь на "может". -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Artemon |
|
||||||||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Да дело в том, что после Win32 нужно будет по быстрому перевести эту DLL в WinCE, вот поэтому и пишу DLL на VS2005.
Это все в корне меняет, я не вызываю напрямую вирутальные методы объекта, вместо этого я вызываю экспортируемые ф-ии DLL.
Нет желания разбираться, побыстрее сделать и забыть.
У меня ни разу не было чтобы с одинаковым компилятором и вылез какой-то глюк. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
||||||||
|
|||||||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 26 Всего: 459 |
Это не гарантия ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Используйте COM модель. Состыкуется (и на CE переведется)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |