Форум » [x]Harbour » Как скомпилировать клипперовскую программу? » Ответить

Как скомпилировать клипперовскую программу?

vibos: Люди добрые, помогите пжлста! Есть программа написанная на клиппере предположи 1.prg. Она использует данные находящиеся в 1.obj и 2.obj. Какие команды мне необходимо использовать, чтобы правильно ее скомпилировать при помощи MiniGUI. Что написать в ВАТ файле? уже совсем запутался я с этим компилятором. В клиппере использовался BAT-файл с такими строчками: c:\CL\clipper %1 c:\CL\rtlink file %1 library c:\CL\clipper,c:\CL\extend,c:\CL\terminal,c:\CL\dbfntx,c:\cl\1.obj,c:\cl\2.obj,c:\cl\ct.lib Заранее спасибо!

Ответов - 30, стр: 1 2 All

PSP: А в чем проблема? EXE-шник не получается? Как Вы запускаете bat файл?

vibos: Дело в том, что я решил попробывать скомпилировать ее из-под MiniGUI. Пишу в BAT-файле строчку (ее я взял из примера): call C:\MiniGUI\BATCH\compile.bat 1 %1 %2 %3 %4 %5 %6 %7 %8 %9 после запуска компилятор мне сообщает, что не может найти ppi_wag.prg. Данный файл находится в 1.obj. Вот я и не могу понять как мне "объяснить" компилятору откуда его нужно брать? Какой командой это делается?

PSP: А почему компилятор ищет ppi_wag.prg? Вы явно указываете этот файл компилятору или есть ссылка в prg-коде?


vibos: есть ссылка в prg-коде

PSP: vibos пишет: есть ссылка в prg-коде А самого файла нет, так? Вы говорите, что все функции из ppi_wag.prg есть в 1.obj, так? Тогда ссылку на ppi_wag.prg в программе закоментируйте, а 1.obj просто прилинкуйте к проекту. Compile.bat имеет опцию /B для таких целей.

vibos: Если я правильно понял, то строчка должна выглядеть так?: call C:\MiniGUI\BATCH\compile.bat 1 /b 1 %1 %2 %3 %4 %5 %6 %7 %8 %9

PSP: У Вас получится, что 1.prg скомпилируется в 1.obj, затерев старый 1.obj с нужными функциями. Разберитесь, какие файлы должны участвовать в проекте.

vibos: Ладно. Переименовал файлы. Пишу свои подробные действия. Файл программы называется SRAP2.PRG. Файл в котором находятся множество подпрограмм (в том числе и ppi_wag) называется BIBM.OBJ. Исполняемый файл COMPILE_01.BAT, его содержимое: call C:\MiniGUI\BATCH\compile.bat SRAP2 /b BIBM %1 %2 %3 %4 %5 %6 %7 %8 %9 При его (исполняемого файла) запуске выдается ошибка: SRAP2.PRG(1) Error E0001 Statement not allowed outside of procedure or function Cannot open ppi_wag.prg, assumed external 1 error No code generated. Compile error. В тексет SRAP2.PRG есть строчка которая использует подпрограмму ppi_wag (из BIBM.obj): ... do ppi_wag with kodd,5,sk ... Судя по данной ошибке мой BIBM.obj никак не воспринялся компилятором. Может подскажете, что я делаю не так?

Петр: Если BIBM.OBJ есть 16 битный обьектный модуль созданный Clipper, то прилинковать ее к 32 разрядной Harbour программе у вас не получится.

vibos: спасибо за ответы. А какие тогда есть варианты решения?

vibos: впринципе можно найти BIBM.PRG. А как из него сделать 32-разрадный модуль? Извините за элементарные вопросы, но только начинаю осваивать этот продукт.

PSP: Укажите его в параметрах compile.bat вместе с SRAP2.

vibos: Должна быть такая строчка?: call C:\MiniGUI\BATCH\compile.bat SRAP2 BIBM %1 %2 %3 %4 %5 %6 %7 %8 %9 или нужно какие-то ключи добавить?

PSP: Поправлюсь: все-таки правильнее, наверное, в конец файла SRAP2.prg добавить строчку: #include "BIMB.prg" и запускать compile.bat SRAP Должно хватить... :)

vibos: спасибо. вроде сработало. но все же интересно как мне сделать библиотеку из PRG файла.

PSP: vibos пишет: как мне сделать библиотеку из PRG файла. Хотите LIB что ли?

vibos: но exe файл все-равно не создается. выдается ошибка: SRAP2.PRG(1) Error E0001 Statement not allowed outside of procedure or function

Pasha: vibos пишет: как мне сделать библиотеку из PRG файла не просто, а очень просто вот батник: @if not exist %1.prg exit set HB_INSTALL=\xharbour %HB_INSTALL%\bin\harbour %1 /B /N /M /W /I%HB_INSTALL%\include\ >>_2 @if errorlevel 1 exit d:\bcc55\bin\bcc32 -M -c -O2 -Id:\bcc55\include;%HB_INSTALL%\include %1.c @if errorlevel 1 exit d:\bcc55\bin\tlib mylib /C +-%1 @del %1.c @del %1.obj

vibos: PSP пишет: Хотите LIB что ли? ну да.

Pasha: vibos пишет: но exe файл все-равно не создается. выдается ошибка: SRAP2.PRG(1) Error E0001 Statement not allowed outside of procedure or function надо убрать опцию /n для компилятора harbour

PSP: vibos пишет: но exe файл все-равно не создается. выдается ошибка: SRAP2.PRG(1) Error E0001 Statement not allowed outside of procedure or function Что в строке 1 файла SRAP2.prg? Do... ? Любая Clipper (Harbour) программа должна начинаться с процедуры (функции) MAIN. А уж внутри - что душе угодно? P.S. Или как Паша написал... :)

vibos: Насчет несоздаваемого ехе-файла. я так понимаю, что проблема заключается в том, что у меня в клипере используются простоые операторы, а харбор является объектовым компилятором. Как мне скомпилировать обычное досовское окошко из Харбора? возможно ли это?

vibos: Pasha пишет: надо убрать опцию /n для компилятора harbour это в каком-то кофиг-файле?

vibos: PSP пишет: Что в строке 1 файла SRAP2.prg? Do... ? Любая Clipper (Harbour) программа должна начинаться с процедуры (функции) MAIN. А уж внутри - что душе угодно? Пробовал добавить не получается. в первой строке: @0,0 clear

Pasha: vibos пишет: это в каком-то кофиг-файле? В батнике, которым вы пользуетесь. Если это compile.bat из minigui - то в нем. Найдите вызов harbour.exe, и уберите этот флажок В харброре все, как в клиппере, только компиляция выполняется в 2 этапа - еще вызывается компилятор bcc Любая Clipper (Harbour) программа должна начинаться с процедуры (функции) MAIN Не совсем. S'87 позволял создавать prg без оператора func/proc, создавая их неявно. Clipper 5.x и Harbour тоже понимает такой синтаксис. За это отвечает как раз флажок /n

PSP: Как-то так... :)

vibos: call C:\MiniGUI\BATCH\compile.bat SRAP2 /n %1 %2 %3 %4 %5 %6 %7 %8 %9 я вас правильно понял?

PSP: vibos пишет: call C:\MiniGUI\BATCH\compile.bat SRAP2 /n %1 %2 %3 %4 %5 %6 %7 %8 %9 я вас правильно понял? Нет. Нужно отредактировать файл Compile.bat. Убрать флаг /n у всех вызовов компилятора harbour. Вариант 2: оформить стартовую процедуру, чтобы ни один из операторов или функций не находился вне ее.

Pasha: PSP пишет: Вариант 2: оформить стартовую процедуру, чтобы ни один из операторов или функций не находился вне ее. Лучше, конечно, так. В начале модуля поставить: proc <modulename> и в конце (или перед первой функцией) - return

Петр: vibos пишет: но все же интересно как мне сделать библиотеку из PRG файла. Если вы используете последнюю версию MiniGUI, то в папке Harbour\bin находится утилита hbmk2, что-то типа rmake для Harbour. Рекомендую освоить. Examples to build a Harbour static library: - To build library 'mylib' from sources: 'hbmk2 mylibsrc.prg -omylib -hblib' - To build library 'mylib' from sources using incremental mode: 'hbmk2 mylibsrc.prg -omylib -hblib -inc'



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