45828 (665172), страница 4
Текст из файла (страница 4)
Объявить экспортируемые функции как __stdcall.
Поместить объявления функций в блок extern ”С”. Не экспортировать классы и функции-члены классов.
Скомпилировать BCB dll.
Поскольку создать корректную библиотеку импорта с помощью утилиты lib.exe не удается, создать ложную VC dll, которая содержит такой же набор функций, как и исходная BCB dll.
Проверить идентичность названий ложной dll и dll исходной, названия должны совпасть.
Если для ложной библиотеки используются исходные тексты BCB dll, то удалить тела функций, если не используются, то создать пустые функции с такими же именами и сигнатурами, как в исходной dll.
Дабы предотвратить изменение имен функций при экспорте, добавить к VC-проекту ложной библиотеки .def-файл с секцией EXPORTS, в которой просто перечислены оригинальные наименования всех экспортируемых функций.
Скомпилировать ложную dll и получить необходимый .lib-файл с корректным отображением __stdcall-функций.
Создать клиентский VC-проект и добавить к нему полученный .lib-файл.
Скопировать BCB dll и ее заголовочный файл в папку с клиентским VC-проектом.
В клиентском приложении подключить заголовочный файл.
Вызвать в тексте программы необходимые функции, не задумываясь над тем, что они расположены во внешней dll.
Заключение
Как вы могли убедиться, обеспечение успешного взаимодействия BCB dll и клиентского VC-приложения является нетривиальной задачей. Однако такое взаимодействие становится необходимым в случаях, когда использование VCL и C++ Builder-а при разработке отдельных частей приложения является более предпочтительным (например, в силу временных затрат). Используя описанные в статье алгоритмы, вы сможете создавать и успешно использовать BCB dll из VC-проекта.
Список литературы
Для подготовки данной работы были использованы материалы с сайта http://www.rsdn.ru/