Категория
Информатика
Тип
реферат
Страницы
6 стр.
Дата
21.02.2009
Формат файла
.rtf — Rich Text Format (Wordpad)
Архив
20763.zip — 26.45 kb
  • sozdanie-v-srede-borland-c-builder-dll-sovmestimoj-s-visual-c_20763_1.rtf — 167.04 Kb
  • Readme_docus.me.txt — 125 Bytes
Оцените работу
Хорошо  или  Плохо


Текст работы

Создание в среде Borland C++ Builder dll, совместимой с Visual C++ Alena Alena
Создание в среде 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);
в зависимости от соглашения



Ваше мнение



CAPTCHA