MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Создание в среде Borland C++ Builder dll, совместимой с Visual C++

Название:Создание в среде Borland C++ Builder dll, совместимой с Visual C++
Просмотров:94
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Проблемы взаимодействия. Алгоритмы создания VC-совместимой dll и ее использование. Алгоритм с явной загрузкой dll. Алгоритм с неявным связыванием для экспорта (импорта) __cdecl-функций. Использование псевдонимов.

Часть полного текста документа:

Создание в среде Borland C++ Builder dll, совместимой с Visual C++ Роман Мананников Проблемы взаимодействия
    Сложность использования dll, созданной с помощью Borland C++ Builder (далее BCB), в проектах, разрабатываемых в средах Microsoft, обусловлена тремя основными проблемами . Во-первых, Borland и Microsoft придерживаются разных соглашений о наименовании (naming convention) функции в dll. В зависимости от того, как объявлена экспортируемая функция, ее имя может быть дополнено компилятором определенными символами. Так, при использовании такого соглашения о вызове (calling convention), как __cdecl, BCB перед именем функции добавляет символ подчеркивания. Visual C++ (далее VC), в свою очередь, при экспорте функции как __stdcall добавит к ее имени помимо подчеркивания также информацию о списке аргументов (символ @ плюс размер списка аргументов в байтах).
    ПРИМЕЧАНИЕ
    Использование соглашения __stdcall означает, что вызываемая функция сама удалит из стека свои аргументы. Соглашение __cdecl, наоборот, обязывает очищать стек вызывающую функцию. Объявление функции как __cdecl приведет к некоторому (незначительному) увеличению размера конечного исполняемого файла, поскольку каждый раз после вызова этой функции требуется код по очистке стека, с другой стороны, именно из-за очистки стека вызывающей функцией допускается передача переменного числа параметров. В стек параметры и в том, и в другом случае помещаются справа налево. В таблице 1 приведены возможные варианты наименований для экспортируемой функции MyFunction, объявленной следующим образом:
    extern "C" void __declspec(dllexport) MyFunction(int Param); в зависимости от соглашения о вызове () и компилятора.
    Соглашение о вызове VC++ C++ Builder __stdcall _MyFunction@4 MyFunction __cdecl MyFunction _MyFunction Таблица 1. Наименования функций в зависимости от соглашения о вызове и компилятора.
    Во-вторых, объектные двоичные файлы (.obj и .lib), создаваемые BCB, несовместимы с объектными файлами VC, и, следовательно, не могут быть прилинкованы к VC-проекту. Это означает, что при желании использовать неявное связывание (linking) c dll необходимо каким-то образом создать .lib-файл (библиотеку импорта) формата, которого придерживается Microsoft.
    ПРИМЕЧАНИЕ
    Следует отметить, что до появления 32-разрядной версии Visual C++ 1.0 компиляторы Microsoft использовали спецификацию Intel OMF (Object Module Format - формат объектного модуля). Все последующие компиляторы от Microsoft создают объектные файлы в формате COFF (Common Object File Format - стандартный формат объектного файла). Основной конкурент Microsoft на рынке компиляторов - Borland - решила отказаться от формата объектных файлов COFF и продолжает придерживаться формата OMF Intel. Отсюда и несовместимость двоичных объектных файлов. В-третьих, классы и функции-методы классов, экспортируемые из BCB dll, не могут быть использованы в проекте на VC. Причина этого кроется в том, что компиляторы искажают (mangle) имена как обычных функций, так и функций-методов класса (не путайте с разными соглашениями о наименованиях). Искажение вносится для поддержки полиморфизма, то есть для того, чтобы различать функции с одинаковым именем, но разными наборами передаваемых им параметров. Если для обычных функций искажения можно избежать, используя перед определением функции директиву extern "С" (но при этом, во-первых, на передний план выходит первая проблема - разные соглашения о наименовании функций в dll, а во-вторых, из двух и более функций с одинаковым именем директиву extern "С" можно использовать только для одной из них, в противном случае возникнут ошибки при компиляции), то для функций-методов класса искажения имени неизбежны. ............






Похожие работы:

Название:Мифология. Функции мифа. Мифологические школы
Просмотров:679
Описание: Мифология как мир первообразов и материя духовности Но для создателей мифологии она была не просто достоверной или истинной. У них и вопроса не могло возникнуть об истинности. Для первобытного человека мифология

Название:Общественные функции СМИ. По кн. Введение в журналистику
Просмотров:780
Описание: Цвик В. Л. Для чего существует журналистика? Зачем она нужна отдельному индивиду и обществу в целом? Иными словами, каковы социальные функции СМИ? Сразу условимся, что термин "функции” мы будем понимать как разн

Название:Основные тенденции в развитии экспорта и импорта зарубежных стран
Просмотров:681
Описание: Людмила Петровская, Павел Шипук Экспортно-импортные потоки товаров и услуг являются одним из показателей уровня развития стран. Вне всякого сомнения, не всегда возможно стать экспортером продукции, даже имея аб

Название:Понятие, задачи, система и основные функции органов внутренних дел
Просмотров:664
Описание: Органы внутренних дел представляют собой сложную, разветвленную систему, в которую входят в качестве ее функциональных элементов (подсистем) милиция, пожарная охрана, внутренние войска, следственный аппарат и др. О

Название:Господдержка при экспорте промышленной продукции
Просмотров:492
Описание: Орлова Е. А., налоговый консультант ЗАО «АудитСибМаш» КГ «Лекс», член Палаты налоговых консультантов РФ Распоряжением Правительства РФ от 12 февраля 2011 г. № 179-р перечень промышленной продукции, при экспорте которо

 
     

Вечно с вами © MaterStudiorum.ru