Форум » Clipper » Вопрос по сборке проекта » Ответить

Вопрос по сборке проекта

yukirin: использую Clipper 5.2e portable выкачанный по адресу http://softclipper.narod.ru/download.html. При сборке проекта rtlink предлагает указать путь до библиотеки CE50.LIB. Подскажите пожалуйста где найти данный файлик... или полноценную папку со всеми библиотеками. Опыт работы с clipper отсутсвует а экзешник собрать очень хочется. Please help...

Ответов - 67, стр: 1 2 3 4 All

AlexMyr: yukirin пишет: Подскажите пожалуйста где найти данный файлик... Ищите в папке CLIPPER\LIB.

yukirin: Хороший ответ... Изменю вопрос - может ли кто-нибудь поделиться папкой LIB с уже существующей там библ. CE50.LIB, т.к. в том варианте Clipper 5.2e который я скачал данная библиотека отсутствует.

yukirin: Кстати ссылку я неправильную дал - http://softclipper.net/soft-skachat/clipper-5-2e-portable.html - вот по этой ссылке выкачивал. Там было написано "самая стабильная версия со всеми обновлениями и дополнительными библиотеками". А оказалось что не со всеми...


Dima: yukirin пишет: CE50.LIB Не припомню такой библиотеки yukirin пишет: Там было написано "самая стабильная версия со всеми обновлениями и дополнительными библиотеками" Надо понимать что там библиотеки от Clipper + Clipper Tool и среди них не было ни когда CE50.LIB

yukirin: Нужна помощь в сборке проекта. У меня имеется голый исходник размером в 28700 строк который мне достался от одного человека со словами - что это единственный существующий текст программы - другого нет. У меня получить работоспособный экзешник не получается - есть два-три десятка функций на которые блинкер ругается как на не существующие внешние ссылки. Что необходимо подключить( библиотеки, include) я не знаю и подобрать не получается. Вполне возможно что исходник подпорченный ( причем специально). Опыт написания на клиппер, как я писал выше, отсутствует вообще. Пишу на с++... В общем прошу помощи в получении хотя бы нормально запускающегося экзешника))). Для откликнувшихся моя почта - yukirin@yandex.ru или пишите вашу - отправлю.

Pasha: Дайте список нереализованных ссылок. Возможно, они из какой-нибудь распространенной библиотеки, которую надо будет прилинковать.

yukirin: Обновился до версии 5.3b. Подключил в скрипте блинкера файл ctus и изменил библиотеку с ctp на ct - количество ссылок сократилось: BLINKER : 1115 : TORG_11.OBJ(TORG_11) : 'GOTOBOTTOM' : unresolved external BLINKER : 1115 : TORG_12.OBJ(TORG_12) : 'ERRORMESSA' : unresolved external BLINKER : 1115 : TORG_12.OBJ(TORG_12) : 'POSTACTIVE' : unresolved external BLINKER : 1115 : TORG_21.OBJ(TORG_21) : '_NEWCLASS' : unresolved external BLINKER : 1115 : TORG_21.OBJ(TORG_21) : '_ADDMETHOD' : unresolved external BLINKER : 1115 : TORG_22.OBJ(TORG_22) : 'GETREADVAR' : unresolved external BLINKER : 1115 : TORG_31.OBJ(TORG_31) : 'SETCLASS' : unresolved external Вот мой скрипт blinker'а: BLINKER EXECUTABLE CLIPPER F:250;SWAPK:8192;SWAPPATH:C:\TMP BLINKER EXECUTABLE NODELETE BLINKER PROCEDURE DEPTH 100 #BLINKER EXECUTABLE EXTENDED BLINKER INCREMENTAL OFF #BLINKER EXE COMPERSS 1 NOBEL STACK 10240 FILE TORG_11 FILE TORG_12 FILE TORG_21 FILE TORG_22 FILE TORG_31 FILE TORG_32 FILE CTUS LIBRARY CPMI LIBRARY NANFOR LIBRARY CLIPPER LIBRARY TERMINAL LIBRARY EXTEND LIBRARY CT попробовал запустить то что получилось)))) - получил ошибку - RDDREGISTE(0) Internal error 9002 Читал про возможность декомпиляции. Вопрос какова вероятность получения рабочих исходников для возможности дальнейшего сопровождения программы.

Pasha: Если исходная программа собрана rtlink'ом, то ее декомпилировать можно, если блинкером - нет. Функций осталось совсем немного, и достаточно их найти или сделать им замену. PostAvtive, GetReadVar - эти функции есть в clipper 5.3, так что лучше собрать проект этой версией компилятора _NewClass, __AddMethod, SetClass - это явно из какой-то библиотеки для ООП Это не classy, но этих библиотек не так много, надо пересмотреть GOTOBOTTOM - покажите, в каком контексте идет вызов этой функции, чтобы понять что она делает ErrorMessage - можно просто добавить заглушку: func ErrorMesssage return ""

yukirin: так ведь и обновился до версии 5.3б GETREADVAR и POSTACTIVE также unresolved external по поводу GOTOBOTTOM: function TBROWSEIND(Arg1, Arg2, Arg3, Arg4, Arg5) local Local1 Local1:= tbrowsenew(Arg1, Arg2, Arg3, Arg4) settbrowse(Local1, Arg5) return Local1 ******************************** procedure SETTBROWSE(Arg1, Arg2) Arg1:gotopbloc({|_1| (_1:= Set(_SET_SOFTSEEK, .T.), dbSeek(Arg2), Set(_SET_SOFTSEEK, _1))}) Arg1:gobottomb({|| gotobottom(Arg2)}) //функция на которую ругается блинкер Arg1:skipblock({|_1| movepointe(_1, Arg2)}) ******************************** пример вызова TBROWSEIND в которой исполбзуется - gotobottom wbox() Local1:= tbrowseind(0, 0, MaxRow() - 1, MaxCol(),Str(doch->iddoc)) //------------------------------------------------------------------------------------------------// Где взять эти ООП библиотеки? Этот класс используется при печати.

Pasha: gotobottom - это судя по всему seek last т.е. можно добавить эту функцию: func gotobottom(Arg) Local lSoft := Set(_SET_SOFTSEEK, .T.) dbSeek(Arg,, .t.) Set(_SET_SOFTSEEK, lSoft) return nil GETREADVAR и POSTACTIVE должны быть в lib\clipper.lib, размер 694791 от 20.05.1997 Насчет ООП - есть ли в проекте какие-нибудь файлы *.ch, связанные с библиотекой ООП ? Я именно такую не вспомню, пересмотрел какие у меня есть ООП-библиотеки

Pasha: Ага, GETREADVAR и POSTACTIVE это static-функции, значит используется какая-то альтернативная get-система Т.е. исходные тексты не все. Можно попробовать взять модуль source\sys\getsys.prg, найти строки Static function GETREADVAR(..) и Static function PostActive(..) и заменить их на function GETREADVAR(..) и function PostActive(..) Кстати, сырцы похоже получены именно декомпилятором

yukirin: проблема не в исходнике потому как я нашел эти функции в тексте. Проблема видимо в том что я не правильно поделил сам текст программы на куски . Дело в том что переданный мне исходник шел одним файлом и клипер при компиляции выдавал - to many labels и не создавал объектный файл. Мне посоветовали просто раздробить программу на куски что я не задумываясь и сделал. Как правильно разделить текст на куски? Можно ли сделать так что бы клиппер при компиляции с ключем /w все предупреждения писал в файл, а то их довольно много и они быстро пробегают по экрану и что там было понять невозможно. кстати GETREADVAR и POSTACTIVE и др.( кроме ООП ф-ций ) больше не unresolved external. На класс возложена печать, т.е. по идее программа должна у меня запустится без печати - но при запуске получаю - RDDREGISTE(0) Internal error 9002

alkresin: _NEWCLASS, _ADDMETHOD, SETCLASS обнаружились в Fivewin.

alkresin: yukirin пишет: Можно ли сделать так что бы клиппер при компиляции с ключем /w все предупреждения писал в файл, а то их довольно много и они быстро пробегают по экрану и что там было понять невозможно. clipper.exe my.prg /w >my.log

Pasha: yukirin пишет: Как правильно разделить текст на куски? Поскольку восстановить исходную разбивку не получится, то прийдется разбивать хорошо известным методом проб и ошибок, соблюдая некоторые правила Например, такое: static-функция должна быть определена в то модуле, откуда есть ее вызов. Надо либо перенести функцию в тот модуль, либо убрать static На класс возложена печать, т.е. по идее программа должна у меня запустится без печати - но при запуске получаю - RDDREGISTE(0) Internal error 9002 Попробуйте в скрипт сборки добавить: library dbfcdx, dbfntx, _dbfcdx

Pasha: alkresin пишет: _NEWCLASS, _ADDMETHOD, SETCLASS обнаружились в Fivewin. Символы подчеркивания вроде бы в именах функций не так расположены. Может другая библиотека ?

alkresin: Pasha пишет: Символы подчеркивания вроде бы в именах функций не так расположены. Может другая библиотека ? В моей копии objects.lib - именно так.

yukirin: вобщем линкуется сейчас без предупреждение об unresolved external подключил - objects.lib. но толку от этого мало.... RDDREGISTE(0) Internal error 9002 и все тут. DBFNTX.LIB тоже подключил. если запускать компиляцию с ключем /w - то получаем несколько тысяч предпреждений прмерно одного содержания: Warning C1003 Ambiguous reference: 'GETLIST' Warning C1003 Ambiguous reference: 'GETLIST' Warning C1004 Ambiguous reference, assuming memvar: 'GETLIST' вместо GETLIST могут быть другие переменные но с GETLIST подавляющее большинство.... пока тупик. нашел процедуру ******************************** init procedure DBFNTXINI rddregiste("DBFNTX", 1) return ******************************** мож в ней что не так вообще в тексте программы довольно много функций и процедур выдернутых из текстов представленных на страничке http://www.mythologics.com/c53/

alkresin: Обычно в клипперовских программах rddregister() напрямую для dbfntx не вызывается, это происходит автоматически при инициализации приложения. Поэтому смело выкидывайте эту процедуру.

yukirin: Нашел вызовы ф-ции rddregiste два раза - один раз с параметром DBF другой DBFNTX. Закомментировал. Получил окно при запуске - unrecoverable error 650: Processor stack fault. Про что в инете пишут Бесконечная рекурсия. Дааа. Объясните пожалуйста как пользоватся клипперовским отладчиком. Я так понял это файл CLD.EXE. Но в в версии 5.3 нет такого файла там есть CLDR.EXE - это он? Откомпилировал прогу с ключом /b, запустил CLDR c параметром MYEXE.EXE и получил бяку.. Что то про то что нет такого файла, хотя файл рядом лежит. З.Ы. насколько критичны варнинги приведенные мной в посте №8 ?



полная версия страницы