Здравствуйте, _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
__>Вроде, все.
Так уже пробовал, не подходит.
Наверное, придется писать обертку на паскале...
В любом случае спасибо за советы