Problemi con compilazione Harbour

183 views
Skip to first unread message

Mario Rossi

unread,
Nov 15, 2013, 12:06:59 PM11/15/13
to harbo...@googlegroups.com
Ciao a tutti,
da quando sono passato a WINDOWS X64 non ho più potuto usare un mio programma scritto in CLIPPER 5.2. Avendo conosciuto da poco HARBOUR pensavo di poter ricompilare i sorgenti (dopo aver sostituito tutte le funzioni RAT_ della libreria SUPER con funzioni da me adattate usando funzioni NANFOR) ma al momento della compilazione appaiono diverse scritte con "undefined reference to 'HB_FUN_' "  seguito dal nome di una funzione es: undefined reference to 'HB_FUN_FTMGETX'. Dopo di che appare "collect2: ld returned 1 exit status" e per finire "hbmk2: Error: Running linker. 1".
Cosa devo fare per risolvere il problema?
Faccio presente che attualmente per compilare scrivo semplicemente HBMK2 seguito da tutti i sorgenti con estensione .PRG inserendo per primo il nome del sorgente da cui dovrà prendere il nome l'eseguibile. Il primo sorgente inizia con:
ANNOUNCE InitExitProc
Main()
PROCEDURE Main()
...
...
RETURN
...
...

Ultima domanda: alcune funzioni usano delle variabili STATICHE al di fuori di ogni funzione che in CLIPPER compilavo con l'opzione /N come fare per HARBOUR?

Spero che qualcuno riesca a spigarmi come fare dal momento che al programa da me fatto ci tengo parecchio e mi piacerebbe poter continuare ad utilizzarlo.
Grazie

Francesco Perillo

unread,
Nov 15, 2013, 1:11:12 PM11/15/13
to harbo...@googlegroups.com

Ciao

Inizia con il creare un file Pippo.hbp ed elenca tutti i PRG. Quindi compila con hbmk2 Pippo.hbp
Quei messaggi sono funzioni non trovate/compilate....

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Harbour supporto utenti in italiano" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più i suoi messaggi, invia un'email a harbourITA+...@googlegroups.com.
Per postare messaggi in questo gruppo, invia un'email a harbo...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/harbourITA.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.

Mario Rossi

unread,
Nov 16, 2013, 2:17:29 AM11/16/13
to harbo...@googlegroups.com
Ciao Francesco,
innanzi tutto grazie per la risposta (pensavo che anche harbour fosse stato abbandonato...) in secondo luogo ho fatto come mi hai detto ma non è cambiato niente. Devo prima risolvere il problema delle funzioni non trovate/compilate? In ogni caso dal momento che la maggior parte si riferiscono a funzioni NANFOR che gestiscono il mouse, avevo letto che le librerie NANFOR erano pienamente supportate (ho cambiato le RAT_ con loro proprio per quello).


Per annullare l'iscrizione a questo argomento, visita https://groups.google.com/d/topic/harbourITA/GkrertrLSlU/unsubscribe.
Per annullare l'iscrizione a questo gruppo e a tutti i suoi argomenti, invia un'email a harbourITA+...@googlegroups.com.

Massimo Belgrano

unread,
Nov 16, 2013, 3:17:32 AM11/16/13
to harbo...@googlegroups.com
sono funzioni mancanti
vai qua e cerca se li trovi in una libreria per la parte di dopo HB_FUN_
http://www.elektrosoft.it/tutorials/Harbour-Reference-Guide/harbour-complete-functions-list.htm
se no devi cercare nei tuoi sorgenti



--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Harbour supporto utenti in italiano" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più i suoi messaggi, invia un'email a harbourITA+...@googlegroups.com.
Per postare messaggi in questo gruppo, invia un'email a harbo...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/harbourITA.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.



--
Massimo Belgrano
Delta Informatica S.r.l. (Cliccami per scoprire 

Mario Rossi

unread,
Nov 16, 2013, 4:52:55 AM11/16/13
to harbo...@googlegroups.com
Ciao Massimo,
grazie anche a te per la risposta, ho fatto il controllo che mi hai chiesto e si dovrebbero trovare tutte nelle librerie hbct e hbnf (del resto come librerie esterne ho usato solo quelle CT52 e NANFOR. Come devo fare per inserirle in fase di linkaggio?



Per annullare l'iscrizione a questo argomento, visita https://groups.google.com/d/topic/harbourITA/GkrertrLSlU/unsubscribe.
Per annullare l'iscrizione a questo gruppo e a tutti i suoi argomenti, invia un'email a harbourITA+...@googlegroups.com.

Massimo Belgrano

unread,
Nov 16, 2013, 5:29:28 AM11/16/13
to harbo...@googlegroups.com
Le aggiungi come righe all'hbp

COme usare hbmk2 per compilare molti prg in un file lib?

hbmk2 test1 test2 testn -lmylib1 -lmylib2 -lmylibn

In alternativa è possibile utilizzare per la sola piattaforma windows una sinstassi sconsgilata

hbmk2 test1.prg test2.prg testn.prg mylib1.lib mylib2.lib mylibn.lib

Francesco Perillo

unread,
Nov 16, 2013, 8:46:58 AM11/16/13
to harbo...@googlegroups.com
mario,
all'interno del file pippo.hbp inserisci le righe che fanno riferimento alle librerie che ti servono, ovvero devi puntare ai file .hbc

ad esempio per la nanforum devi mettere
hbnf.hbc

Quando dai il comando
hbmk2 pippo.hbp
il file pippo.hbp viene letto ed analizzato.
Tutti i riferiemnti a file .hbc vengono aperti e interpretati. Se vedi nel file hbnf.hbc vedrai il comando incpaths=. che in pratica aggiunge un -I della dir corrente così che puoi fare un #include senza conoscere la dir.
libs= invece elenca i file .lib che devono essere aggiunti in fase di link.

E' consigliato quindi usare i file .hbc se ci sono. Se hai tue librerie, è altrettanto utile crearti dei file .hbc.

IN questi casi di porting, il tuo amico è grep per andare a fare ricerche sui sorgenti.

Ti invito poi a verificare quali siano i nomi di funzione che ti mancano, in quanto clipper troncava i nomi di funzione a 10 caratter ( nomedifunzione() e nomedifunz() erano la stessa funzione) mentre in harbour no, e il linker ti da errore.

Facci sapere
Ciao


2013/11/16 Massimo Belgrano <mbel...@deltain.it>

Mario Rossi

unread,
Nov 18, 2013, 3:39:23 AM11/18/13
to harbo...@googlegroups.com
Ciao,
ho incluso alla lista dei PRG anche "hbnf.hbc" e "hb.ct" ma ricevo i seguenti errori:
- nel caso metta per prima "hbnf" ricevo l'errore: Error F0034 Bad command line option 'nf'
- nel caso metta per prima "hbct" ricevo l'errore: Error F0034 Bad command line option '-c'

inserisco di seguito anche il file .bat che eseguo per configurare l'ambiente (nel caso ci sia un errore lì):
SET INCLUDE=D:\HB30\INCLUDE
SET LIB=D:\HB30\LIB
SET OBJ=D:\HB30\OBJ
PATH D:\HB30\BIN;%PATH%

Esiste una guida tipo l'NG del clipper con tutti i comandi/funzioni/codici errore?

Grazie sempre

Massimo Belgrano

unread,
Nov 18, 2013, 4:41:15 AM11/18/13
to harbo...@googlegroups.com
Molti dei suggerimenti erano per la 3.2 che ti suggerisco di scaricare da http://sourceforge.net/projects/harbour-project/files/binaries-windows/nightly/harbour-nightly-win.exe/download
ma non li hai leltti con attenzione improvvisando hb.ct invece che -lhbct e con la 3.0 -lhbnf

cd \hb30\lib\win\mingw
dir lib*.a
Tutte le lib iniziano con lib  e finiscono con .a
il nome della libreria sta in mezzo
in un hbp 
-lgtwvt
-ltip

Francesco Perillo

unread,
Nov 18, 2013, 5:25:06 AM11/18/13
to harbo...@googlegroups.com
Come ti ha detto Massimo, scarica la nightly. E' ok.

Poi fai un unico SET del PATH alla directory bin, dove c'è il programma harbour e soprattutto hbmk2.

hbmk2 è un make, e si occupa lui di cercare i vari pezzi, settare le include predefinite, etc.

nella 3.0 non ricordo se funzionava il discorso .hbc

comunque ti commeno un pezzo di un mio .hbp

# non far comparire una finestra prompt dei comandi in esecuzione
-gui
# setta una GT (interazione input/output) su "form" win32 (non dentro il prompt dei comandi)
# in pratica emula un text-mode disegnando su una canvas
-gtwvt

# dici a hbmk2 di compilare solo i file modificati dall'ultima compilazione
-inc
# setta una #define
-dHARBOUR

# se togli il rem, passi il parametro a harbour, in questo caso per creare i file ppo
##-prgflag=-p

#  indica il nome del programma .exe
#
-ohbpippo

# occhio qui: ho due tipologie per aggiungere una stessa libreria.
#  primo caso, valido in harbour 2.0 (che ho in produzione), aggiungo direttamente la libreria
-lhbtip

# secondo caso, valido da versione ???? aggiungo il file.hbc
hbtip.hbc

# elenca tutti i files
dir\file1.prg
dir2\filex.prg
.....





2013/11/18 Mario Rossi <rossi.ma...@gmail.com>

Mario Rossi

unread,
Nov 18, 2013, 6:25:50 AM11/18/13
to harbo...@googlegroups.com
Ok grazie,
finalmente ho creato l'eseguibile ma, al mometo, ho riscontrato 2 problemi:
1) Non viene riconosciuto il click del mouse (la funzione che rileva se si trova in una determinata area funziona)
2) Uscendo dal programma appare il messaggio di errore:
ERROR TERM/2014 CREATE ERROR: LPT1 (DOS ERROR 2)

faccio presente che nel programma non ho previsto nessuna funzione di stampa e anche facendo una ricerca in tutti i sorgenti non venono trovati nessun riferimento a "LPT" od a "SET PRINTER".


Mario Rossi

unread,
Nov 18, 2013, 6:28:51 AM11/18/13
to harbo...@googlegroups.com
Dimenticavo, sono passato alla 3.2

Francesco Perillo

unread,
Nov 18, 2013, 6:52:57 AM11/18/13
to harbo...@googlegroups.com



2013/11/18 Mario Rossi <rossi.ma...@gmail.com>

Ok grazie,
finalmente ho creato l'eseguibile ma,

Bene !!!!
 
al mometo, ho riscontrato 2 problemi:
1) Non viene riconosciuto il click del mouse (la funzione che rileva se si trova in una determinata area funziona)

Io non uso il mouse quindi non saprei dirti esattamente, ma penso che qui puoi trovare spunto

http://www.creasolgroup.com/xOraclipLanguageReferenceGuide/xOraClip%20Language%20Reference/Commands/Set_eventmask.en.html

 
2) Uscendo dal programma appare il messaggio di errore:
ERROR TERM/2014 CREATE ERROR: LPT1 (DOS ERROR 2)

 

faccio presente che nel programma non ho previsto nessuna funzione di stampa e anche facendo una ricerca in tutti i sorgenti non venono trovati nessun riferimento a "LPT" od a "SET PRINTER".

Qui non posso aiutarti se non dicendo che anche io ho dovuto rimuovere riferimenti a LPT... cerca meglio e prova a mettere qualche messaggio di di debug... ma non ti da una riga di errore ? Guarda se ti ha creato un file nuovo con un errore.

Francesco

Mario Rossi

unread,
Nov 18, 2013, 8:19:23 AM11/18/13
to harbo...@googlegroups.com
Per il primo punto penso che il link mi potrà essere d'aiuto.
Per il secondo ho trovato la funzione incriminata che provvederò a riscrivere (anche se non sò ancora come).

Ti ringrazio per tutto l'aiuto che mi hai dato assieme a Massimo Belgrano, finalmente potrò riutilizzare il mio programma (anche se non dovessi poter uttilizzare i mouse non mi importerebbe più di tanto).
Solo un'ultima cosa:
attualmente posso continuare a programmare in clipper e successivamente compilare con harbour ma se volessi programmare direttamente in harbour esiste una guida con tutti i comandi/funzioni e relativi esempi (tipo l'NG del clipper)?

Gradie di nuovo e penso che, almeno fino a quando non mi deciderò a programmare direttamente in HARBOUR, non dovrei più disturbarvi.
Ciao, Ciao



--

Massimo Belgrano

unread,
Nov 18, 2013, 8:31:52 AM11/18/13
to harbo...@googlegroups.com
Sempre penso che non ci leggi con attenzione
la più completa lista è qua
http://www.elektrosoft.it/tutorials/Harbour-Reference-Guide/harbour-complete-functions-list.htm
Nei tutorial trovi anche la guida




Per annullare l'iscrizione a questo gruppo e non ricevere più i suoi messaggi, invia un'email a harbourITA+...@googlegroups.com.

Per postare messaggi in questo gruppo, invia un'email a harbo...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/harbourITA.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.

Francesco Perillo

unread,
Nov 18, 2013, 8:40:55 AM11/18/13
to harbo...@googlegroups.com

Solo un'ultima cosa:
attualmente posso continuare a programmare in clipper e successivamente compilare con harbour ma se volessi programmare direttamente in harbour esiste una guida con tutti i comandi/funzioni e relativi esempi (tipo l'NG del clipper)?

Assolutamente NO !

Ma non perché non sia tecnicamente possibile ma perché harbour ti apre un mondo enorme.... lo stesso codice lo puoi usare per generare programmi text-mode windows, linux e parzialmente per Mac.
Puoi creare programmi per android (ancora in fase sperimentale) ma soprattutto usando una libreria che si chiama hbQt e che si aggancia alle librerie Qt puoi creare app grafiche che girano sotto windows, mac e linux (e prossimamente sotto iOs e android, blackberry 10 e svariati linux embedded...) ma devi probabilmente riscrivere parte del programma (quanto devi riscrivere dipende da come è scritto adesso....) (lancia il programma hbide)

Se usavi la libreria super da qualche parte c'è il diff da applicare ai sorgenti per renderlo compatibile harbour (e quindi forse anche il mouse).

Con la lib harupdf puoi creare dei pdf, con la tip puoi usare servizi web (inviare mail, leggere pagine web), puoi collegarti ai db mysql, postgres, oracle, e tante tante altre cose interessanti.

Te ne cito solo una: hbrun. E' l'equivalente del vecchio dot prompt del dbase III+ ma molto molto più potente. All'interno c'è il compilatore harbour. In pratica non ti serve compilare i tuoi programmi e può essere usato per lanciare script.

Fino a poco tempo fa se dovevo fare elaborazioni su file di testo sotto windows, copiavo sotto linux e usavo i tool linux come sed, grep, tail, cut e alla fine rricopiavo sotto windows.

Ora invece scrivo degli script harbour... ti faccio un piccolo esempio: salva il codice seguente con il nome pippo.prg e lancialo con hbrun pippo.prg. Il programma legge il file passato come secondo parametro con la memoread, sostituisce le andate a capo e poi crea un array "b" con le righe del file...

#pragma -w0
procedure main

   parameters cFile

   local a := {}

   IF pcount() != 1

      ? "Usage: pippo nomefile.txt"
      quit
   ENDIF

   IF ! file ( cFile )
      ? "File ", cFile , " non trovato"
      quit
   ENDIF

  c := lower( memoread( cFile ) )
  c := strtran( c, chr(10), chr(13) )

  b := hb_atokens( c, chr(13) )


  for i := 1 to len( b )
      ? "--> ", b[i]
    
   next


Francesco Perillo

unread,
Nov 18, 2013, 8:43:08 AM11/18/13
to harbo...@googlegroups.com
Dimenticavo una cosa forse ancora più importante: harbour include degli RDD (accesso ai dati) di gran lunga superiore a clipper. Ad esempio comprende - gratis - una libreria compatibile con le SIX, può usare dbf  con le estensioni foxpro... magari sono cose che ti servono... e ovviamente supporta dbf/ntx/cdx/dbt/fpt...


2013/11/18 Francesco Perillo <fper...@gmail.com>

Leandro Gelsomini

unread,
Jan 31, 2014, 12:27:39 PM1/31/14
to harbo...@googlegroups.com
Ragazzi stò inizando adesso ad utilizzare Harbour , ho una domanda che probabilmente vi sembrerà stupida , la libreria HbQt dove la trovo ? Ho installato Hb32 .
Ciao

Massimo Belgrano

unread,
Jan 31, 2014, 12:42:59 PM1/31/14
to harbo...@googlegroups.com


--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Harbour supporto utenti in italiano" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più i suoi messaggi, invia un'email a harbourITA+...@googlegroups.com.

Per postare messaggi in questo gruppo, invia un'email a harbo...@googlegroups.com.
Visita questo gruppo all'indirizzo http://groups.google.com/group/harbourITA.
Per ulteriori opzioni, visita https://groups.google.com/groups/opt_out.
Reply all
Reply to author
Forward
0 new messages