Здравствуйте, Seeker, Вы писали:
S>Здравствуйте, _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
Вроде, все.