Re[8]: Проблема с созданием Dll на VC++ для вызова из Delphi
От: Seeker  
Дата: 17.06.05 11:02
Оценка:
Здравствуйте, _const_, Вы писали:

S>>Похоже, в документации для вызывающе программы ошибка. Получается, что способ передачи параметров

S>>экспортируемой функции должен быть родным паскалевским (register, кажется), когда параметры передаются
S>>через регистры слева направо

__>__stdcall

__>По-моему, не только в этом дело, а еще и в том, кто очищает стек. Но это уже совсем другая песня.

S>>Тогда вместо

S>>
S>>function (inParam:PChar;outParam:PChar;outSize:integer): Integer; cdecl;
S>>должно быть
S>>function (inParam:PChar;outParam:PChar;outSize:integer): Integer // cdecl отсутствует
S>>


S>>Вопрос: возможно ли на С задать паскалевский способ?


__>>>Вообще же Микрософт говорит, что экспортируемые ф-ции должны быть по __stdcall.

S>>Согласен. Проблема в том, что есть только бинарник вызывающей программы, поэтому
S>>приходится подстраиваться под нее.

__>А исходников нет?

Нет, в этом вся загвоздка

__>Тогда, полагаясь на стандарт, пишем так:

__>
__>extern "C" int __stdcall DLLFunc(char inParam, char outParam, int outSize);
__>


__>Далее создаем DEF файл, в котором прописываем

__>EXPORTS
__> DLLFunc

__>Вроде, все.

Так уже пробовал, не подходит.

Наверное, придется писать обертку на паскале...
В любом случае спасибо за советы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.