- Messaggi: 4
- Ringraziamenti ricevuti 0
Utilizzo Librerie In C
- COM_EASYSOCIAL_GUEST_NAME
-
Autore della discussione
- Visitatori
-
19 Anni 4 Mesi fa #29527
da COM_EASYSOCIAL_GUEST_NAME
Utilizzo Librerie In C è stato creato da COM_EASYSOCIAL_GUEST_NAME
Ciao a tutti,
per un progetto universitario abbiamo bisogno di utilizzare delle librerie! Abbiamo provato di tutto...
Le abbaimo messe in tutte le cartelle possibili ed immaginabili. Siamo persino arrivate a creare una libreria personale con le funzioni da richiamare... Ma niente....
Qualcuno sa darci qualche consiglio...
Vi prego, siamo abbastanza disperate
Grazie Claudia e Oriana!!!
per un progetto universitario abbiamo bisogno di utilizzare delle librerie! Abbiamo provato di tutto...
Le abbaimo messe in tutte le cartelle possibili ed immaginabili. Siamo persino arrivate a creare una libreria personale con le funzioni da richiamare... Ma niente....
Qualcuno sa darci qualche consiglio...
Vi prego, siamo abbastanza disperate
Grazie Claudia e Oriana!!!
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
19 Anni 4 Mesi fa #29559
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Utilizzo Librerie In C
se non ricordo male si doveva inserire la funzionenel codice del progetto e il compilatore cercava la libreria da collegare.
questo sicuramente lo avrete già fatto.
ora consulto la mia guida e vi farò sapere oppure guardate qui programmazione.html.it/guide/lez ... pilazione/
[/url]
include "mialibreria"questo sicuramente lo avrete già fatto.
ora consulto la mia guida e vi farò sapere oppure guardate qui programmazione.html.it/guide/lez ... pilazione/
[/url]
Si prega Accedi o Crea un account a partecipare alla conversazione.
- COM_EASYSOCIAL_GUEST_NAME
-
- Visitatori
-
19 Anni 4 Mesi fa #29577
da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic Utilizzo Librerie In C
ecco cosa ho trovato su un mio manuale, spero vi sia di aiuto:
LA DIRETTIVA #include
la direttiva #include chiede al compilatore di
leggere un altro file sorgente oltre a quello che
contiene la direttiva #include. il nome del file
sorgente deve essere racchiuso fra doppi apici o
fra parentesi angolari. per esempio:
#include "stdio.h"
#include <stdio.h>
chiedono al compilatore di leggere e compilare il
file header delle funzioni di libreria dedicate
ai file.
[...]
l'inclusione del nome del file fra doppi apici o
fra parentesi angolari determina il modo in cui
deve essere condotta la ricerca del file specificato.
se il nome del file è racchiuso fra parentesi angolari,
il file viene ricercato in un modo definito dal
creatore del compilatore. spesso la ricerca viene
eseguita in alcune speciali directory dedicate ai
file di inclusione. se il nome del file è racchiuso
fra doppi apici, il file viene ricercato utilizzando
un altro metodo definito dall'implementazione. per
molti compilatori, i doppi apici consentono di
eseguire la ricerca all'interno della directory
corrente. se il file non viene trovato, la ricerca
viene ripetuta come se il file fosse racchiuso fra
parentesi angolari.
[...]
(in C++)un header è un identificatore standard che
non fa riferimento necessariamente al nome di un file.
pertanto un header è semplicemente un'astrazione che
garantisce che nel programma vengano incluse tutte
le informazioni richieste.
I NUOVI HEADER C++
come si sa, quando si usa una funzione di libreria di
un programma C, si deve includere il relativo header.
tale operazione viene eseguita tramite l'istruzione
#include. per esempio, in C, per includere l'header
per le funzioni di I/O si deve utilizzare la seguente istruzione:
#include <stdio.h>
qui, stdio.h è il nome del file utilizzato dalle funzioni
di I/O e l'istruzione precedente provoca l'inclusione
fisica di tale file nel programma. in pratica l'istruzione
#include normalmente include un file.
[...]
ma lo standard per il C++ ha creato un nuovo tipo di header
utilizzato dalla libreria standard C++. i nuovi header C++
non specificano nomi di file ma identificatori standard
che non necessariamente sono file. i nuovi header C++ sono
un'astrazione che garantisce semplicemente la dichiarazione
dei prototipi e delle definizioni richiesti dalla libreria
C++. poichè i nuovi header non sono file, non hanno
l'estensione .h.Si prega Accedi o Crea un account a partecipare alla conversazione.
- Lia Cinelli
-
- Offline
- New Member
-
Riduci
Di più
19 Anni 2 Settimane fa #33349
da Lia Cinelli
Risposta da Lia Cinelli al topic Utilizzo Librerie In C
Ciao a tutti,
Se usate C++ e cercate di caricare librerie C mi sà che avrete dei problemini....c'è un po' di differenza con il C per caricare le classi, poichè esiste una prassi denominata "name mangling". Le funzioni che non sono "static" vengono convertite in simboli nel file binario, mentre in C il nome della funzione ed il relativo simbolo corrispondono, poichè qui è palese che due funzioni non static abbiano nomi differenti.
In ogni libreria o file oggetto C++ , le funzioni non-static vengono rappresentate da simboli, i quali sono delle stringhe che identificano unicamente la libreria, piuttosto che la funzione o il file oggetto. Mentre in C simbolo e nome della funzione sono uguali (dal momento che due funzioni non statiche possono solo avere nomi distinti), in C++ potete avere una stessa funzione dichiarata più volte con differenti argomenti (overloading), questo però impedisce di utilizzare il solo nome della funzione per rintracciarla. Il "name mangling" modifica perciò il descrittore inserendo dati estesi sulla funzione, perciò la libreria stessa non potrà essere compilata se non in C++. Potreste avere problemi addirittura con compilatori differenti!
La soluzione stà nell'usare la direttiva "Extern", la quale indica al compilatore di attuare il binding dell'oggetto: all'interno dell'oggetto possono esservi sia oggetti (a.e. funzioni) in C che in C++, non importa.
Un piccolo esempio:
extern "C" {
extern int Procedura;
extern void Funzione();
}
Spero di essere stato di aiuto,
Saluti
Federico
Se usate C++ e cercate di caricare librerie C mi sà che avrete dei problemini....c'è un po' di differenza con il C per caricare le classi, poichè esiste una prassi denominata "name mangling". Le funzioni che non sono "static" vengono convertite in simboli nel file binario, mentre in C il nome della funzione ed il relativo simbolo corrispondono, poichè qui è palese che due funzioni non static abbiano nomi differenti.
In ogni libreria o file oggetto C++ , le funzioni non-static vengono rappresentate da simboli, i quali sono delle stringhe che identificano unicamente la libreria, piuttosto che la funzione o il file oggetto. Mentre in C simbolo e nome della funzione sono uguali (dal momento che due funzioni non statiche possono solo avere nomi distinti), in C++ potete avere una stessa funzione dichiarata più volte con differenti argomenti (overloading), questo però impedisce di utilizzare il solo nome della funzione per rintracciarla. Il "name mangling" modifica perciò il descrittore inserendo dati estesi sulla funzione, perciò la libreria stessa non potrà essere compilata se non in C++. Potreste avere problemi addirittura con compilatori differenti!
La soluzione stà nell'usare la direttiva "Extern", la quale indica al compilatore di attuare il binding dell'oggetto: all'interno dell'oggetto possono esservi sia oggetti (a.e. funzioni) in C che in C++, non importa.
Un piccolo esempio:
extern "C" {
extern int Procedura;
extern void Funzione();
}
Spero di essere stato di aiuto,
Saluti
Federico
Ciao a tutti,
per un progetto universitario abbiamo bisogno di utilizzare delle librerie! Abbiamo provato di tutto...
Le abbaimo messe in tutte le cartelle possibili ed immaginabili. Siamo persino arrivate a creare una libreria personale con le funzioni da richiamare... Ma niente....
Qualcuno sa darci qualche consiglio...
Vi prego, siamo abbastanza disperate
Grazie Claudia e Oriana!!!
Si prega Accedi o Crea un account a partecipare alla conversazione.