Приложение Delphi вызывает приложение cobol -> ошибка

Нам нужно получить данные из старой системы учета. Мы получили dll, который дает нам доступ к нужным нам данным. Он включает в себя библиотеку типов, которую мы импортировали.

Если мы запускаем наше тестовое приложение из той же директории, что и система учета, все работает нормально. Если мы попытаемся запустить наше приложение из другого каталога, мы получим следующую ошибку:

Динамически связанная
библиотека времени выполнения RTS 'OOPS', версия 3.1, точка входа упс, не записана в реестре, не найдена или несовместима с требованиями динамически связанной программы COBOL. Динамическое связывание RTS требует: DLL времени выполнения 'OOLSM', по крайней мере, версия 3.1

Кто-нибудь может предоставить полезную информацию по этому поводу?

Мы должны иметь какое-то время выполнения cobol в нашем каталоге? Или в пути? Или зарегистрирован в реестре?

Спасибо,
-Вегар

Обновления:
установка system% path% для включения пути к учетной системе, кажется, делает свое дело. Включение его в качестве пользовательской переменной по какой-то причине не имело такого же эффекта.

10.12.2008 10:22:11
На вашем месте я бы не принял ответ, потому что у вас больше проблем. Вместо того, чтобы задавать новый вопрос в комментарии, отредактируйте его. Пока ответ не принят, вы получите больше внимания и, следовательно, ответов.
Ralph M. Rickenbach 10.12.2008 10:45:24
3 ОТВЕТА
РЕШЕНИЕ

Если он работает из каталога приложения учета, но не из другого, первое, что я попробую, - это добавление этого каталога в ваш путь.

1
10.12.2008 10:35:44
Я думал, что уже пробовал это сделать, но, проведя второй тест, я уверенно делаю шаг вперед.
Vegar 10.12.2008 10:41:27
Я получаю новую ошибку: «Ошибка загрузки: финал« m99finale ». Код ошибки 173, pc = 0, call = 1, seg = 0.»
Vegar 10.12.2008 10:43:18

Какой кобол вы используете? Я делал это в течение года с Microfocus NetExpress 3.1, и все работает просто отлично. Я пишу COBOL DLL для доступа к файлам данных COBOL, а также пишу Delphi DLL для добавления новых функций к старым системам COBOL.

И да, я использую для установки пути выполнения, то есть переменную среды с именем COBDIR, есть и другие, но обычно достаточно% PATH% и% COBDIR%.

Если вы дадите больше подробностей о том, какой компилятор COBOL вы используете, и как называется интерфейс dll, который вы вызываете, я легко вам помогу.

И, возможно, «Зависимость Уокер» может помочь вам определить, какие файлы времени выполнения отсутствуют, если это так. http://www.dependencywalker.com/

2
10.12.2008 11:23:47
Это было интересно! Так как мы получили dll, я не уверен, как это было сделано, но я обязательно спрошу. На нашей тестовой машине COBDIR определяется как переменная пользователя. Путь к системе учета также определяется как переменная пользователя. Перемещение его в системную переменную, кажется, делает свое дело.
Vegar 10.12.2008 11:48:13
Я всегда устанавливаю в качестве системной переменной.
Cesar Romero 10.12.2008 13:40:58
Похоже, что предложение Сезара дало вам остальную часть пути, верно?
Bruce McGee 11.12.2008 11:32:16

Если он уже не загружен в память, Windows ищет библиотеки DLL, которые запрашивает программа в каждом месте, указанном в переменной среды PATH, а также в каталоге, в котором находится приложение.

0
10.12.2008 13:34:30
Это правда, но COBOL использует RUNTIME, и файлы, которые ищет DLL COBOL, должны иметь системную переменную% COBDIR%.
Cesar Romero 10.12.2008 13:42:25