Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DLL MS Visual Studio в C++Buiilder 
:(
    Опции темы
Бегемот
Дата 18.3.2014, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 26.1.2005
Где: На границе Европы и Азии

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



Всем привет.

Прошу помощи по следующему вопросу.

Имеется DLL. С ней lib и h в комплекте. Пытаюсь использовать библиотеку с применением статического сособа загрузки. Подключаю h-файл, добавляю к проекту lib-файл, все это вместе с dll в папку с проектом. Компилирую... получаю ошибку
Код

[Linker Error] 'C:\App\pcb.LIB' contains invalid OMF record, type 0x21 (possibly COFF)


Гуглю, понимаю, что библиотека создана в Visual Studio. Нахожу метод конвертации
Код

сoff2omf src.lib dst.lib 

Проверяю. Получаю lib размер которой 500 байт против 250 кбайт. Понимаю, что не гут.
Дальше решил так
Код

implib new.lib my.dll

Получаю lib размеров 150 кбайт. Подключаю к проекту.  И далее, если вызываю функцию из библиотеки, то работает, а вот если пытаюсь создать объект класса, то получаю сообщения, что не найдены конструктор и деструктор. Полагаю так, что если хоть что-то вызывается из библиотеки, значит lib прилинковался. Как же тогда создать объект класса?
Код

[Linker Error] Unresolved external 'PCBClass::PCBDevice::~PCBDevice()' referenced from C:\App\MAIN.OBJ
[Linker Error] Unresolved external 'PCBClass::PCBDevice::PCBDevice()' referenced from C:\App\MAIN.OBJ

PM MAIL   Вверх
xvr
Дата 19.3.2014, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(Бегемот @  18.3.2014,  05:39 Найти цитируемый пост)
Как же тогда создать объект класса?

Никак. У MS VC и Borland C++ Bulder несовместимые объектные модели. И способы манглинга С++ имен тоже разные, т.ч. даже обычную С++ функцию не удасться вызвать

PM MAIL   Вверх
GraNit
Дата 29.7.2014, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Не знаю как на счет C++, у меня получилось вызвать фукнкцию члена класса, только подключал к проекту динамически а не статически. Могу кинуть свой пример, однако  в нее я никак не могу передать параметр. Думаю, что проект dll неправильно собираю. Что-то в настройках не так.

Чтобы не быть голословным, ссылка на мой пример.

Это сообщение отредактировал(а) GraNit - 29.7.2014, 13:04
PM MAIL   Вверх
Akira
Дата 28.9.2014, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Вариантов немного:
1. собирать из исходников, попутно убирая ms зависимые части.
2. конвертировать obj / lib файлы.
3. собрать dll в студии.
4. использовать сторонний линкер.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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