Re[3]: GetProcAddress и имена с собаками
От: Игорь Вартанов Ниоткуда  
Дата: 18.11.02 05:55
Оценка:
Здравствуйте, Аноним, Вы писали:

А>пока устраивает, уже посмотрел. (_Init@4)Т.е. если я правильно понял, в независимости от компилира extern "C" заставит сделать именно такие имена? (например если кто в Делфи делает, есди это возможно, или в Билдере)


Категорически НЕТ.
Указанное имя специфично исключительно для Microsoft C/C++. У борланда extern "C" __stdcall был вообще без какого-либо манглинга (для его линейки C/C++, скорее всего и для билдера то же самое).

С Delphi вообще отдельная песня. Сей продукт никакого отношения к C/C++ компиляторам не имеет, и все их законы на него не распространяются. Короче, делфа экспортирует имя один в один.

DJ>>>.def файл сгенерил, НО как его использовать то?

R>>Тоже вариант. Если компилируешь в среде Visual C++, просто подключи его к проекту. Иначе передавай его в опции линкера /def:myfile.def.

А>дык, в том то и дело, что динамически надо, что-то типа плаг-инов.


Уважаемый, вы о чем? Виталик говорит о компиляции, а вы?

А>c COM и CORBA и все такое не очень охота разбираться, да и навороты не нужны.


Мама дорогая! Plugin's topic revisited!!!

Все что нужно, так это одна единственная экспортируемая функция, в которую передается структура, первым полем которой будет признак версии (у MS эту роль выполняет поле размера передаваемой структуры). В эту структуру плагин запишет адреса всех входов своего API и глобальных данных (последнее — при необходимости). Эта структура будет для базового экзешника эквивалентом секции импорта плагина.

Другой вариант — эта структура формируется самим плагином, и указатель на нее возвращается его функцией инициализации.

P.S. Я хоть в тему ответил?
---
С уважением,
Игорь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.