file .hbp - includere una funzione da un file invece che dalla lib

62 views
Skip to first unread message

dfpro...@gmail.com

unread,
Oct 9, 2022, 10:44:22 PM10/9/22
to Harbour supporto utenti in italiano
buongiorno a tutti

avrei leggermente modificato una funzione in un file sorgente della lib grumpfish e nel file hbp sono presenti entrambi.
succede che egl continua a linkare la funzione nella lib ignorando il file prg codificato.
ovviamente ho provato a spostare la funzione dopo il -lgrump ma senza successo.

la mia domanda è questa; in che modo costringere il linker a prendere la funz presente nel prg inveche che quella nella lib?

grazie a tutti in anticipo

Daniele

Roberto Chiaiese

unread,
Oct 11, 2022, 8:05:15 PM10/11/22
to Harbour supporto utenti in italiano
ciao,
premetto che non uso hbmake o simili ma un normale file .lnk dove sono elencati i files obj e le lib da linkare.
In questo caso il linker dà sempre la precedenza alle funzioni presenti nei files prg (e quindi .obj) e poi, nel caso ci fossero più lib contenti funzioni con lo stesso nome, la priorità è data dall'ordine delle librerie.
Ovviamente si dà per scontato che non ci siano errori di compilazione e che il file .obj sia corretto ed aggiornato

Mi auguro di essere stato utile
Roberto

dfpro...@gmail.com

unread,
Oct 12, 2022, 2:26:22 AM10/12/22
to Harbour supporto utenti in italiano
Grazie Roberto, ma avevo già ampiamente provato 😁
una buona giornata
Daniele

Francesco Perillo

unread,
Oct 12, 2022, 5:34:19 AM10/12/22
to harbo...@googlegroups.com
Allora, rileggendo forse ho capito il problema. In passato, con il compilatore borland, c'era il rispetto dell'ordine dei files oggetto.
Con il compilatore mingw/gcc la fase di link, non so per quale motivo, non rispetta queste indicazioni.

Io pure ho modificato una funzione di una libreria "clipper".

Quindi supponiamo che tu abbia un file nuova.prg con dentro la funzione modificata. Aggiungi in questo file una nuova funzione, semplice:
function forza_link
return .T.

Nel programma principale, chiama questa funzione:
forza_link()

Il linker è costretto a linkare tutto il .obj e quindi trova la funzione riscritta e non la va a cercare nella libreria.

E' possibile, andrebbe verificato, se basta una REQUEST forza_link() ma chiamando la funzione sei sicuro che venga linkata !



--
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ù le sue email, invia un'email a harbourITA+...@googlegroups.com.
Per visualizzare questa discussione sul Web, visita https://groups.google.com/d/msgid/harbourITA/f6d6eb24-e95d-4286-8146-b0aa0142b652n%40googlegroups.com.

dfpro...@gmail.com

unread,
Oct 12, 2022, 8:11:27 AM10/12/22
to Harbour supporto utenti in italiano
Grazie Francesco, gentilissimo come sempre !
Daniele
Reply all
Reply to author
Forward
0 new messages