Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

undefined reference to `SCardEstablishContext'

205 views
Skip to first unread message
Message has been deleted
Message has been deleted

luca72

unread,
Dec 23, 2009, 5:56:00 AM12/23/09
to
Ciao mi trovo questo errore, quando faccio questa operazione
rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);

premetto che ho dovuto cambiare alcuni include perchè altrimenti
nontrovava il file ad esempio ho dovuto cambiare:
#include </usr/local/include/PCSC/pcsclite.h> nel file winscard.h
perchè lui puntava a PCSC/pcsclite.h ed
#include </usr/local/include/PCSC/wintypes.h> nel file pcsclite.h
perchè lui puntava a /PCSC/wintypes.h.
Se faccio rv = SCardEstablishContext(); Mi dice che non ho tutti gli
argomenti come giusto che sia.
ma se faccio rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL,NULL,
&hContext);
mi becco undefined reference to `SCardEstablishContext'

Avete qualche dritta

Saluti

Luca

Giovanni

unread,
Dec 23, 2009, 6:06:46 AM12/23/09
to

Questo errore mi sembra un errore di link piuttosto che di
compilazione. Manca la libreria.

Tanti auguri di Buon Natale.

Ciao
Giovanni
--
A computer is like an air conditioner,
it stops working when you open Windows.
< http://giovanni.homelinux.net/ >

Giacomo Degli Esposti

unread,
Dec 23, 2009, 6:08:26 AM12/23/09
to
On 23 Dic, 11:56, luca72 <lucabe...@libero.it> wrote:
> Ciao mi trovo questo errore, quando faccio questa operazione
> rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
>
> premetto che ho dovuto cambiare alcuni include perchè altrimenti
> nontrovava il file ad esempio ho dovuto cambiare:
> #include </usr/local/include/PCSC/pcsclite.h> nel file winscard.h
> perchè lui puntava a PCSC/pcsclite.h ed
> #include </usr/local/include/PCSC/wintypes.h> nel file pcsclite.h
> perchè lui puntava a /PCSC/wintypes.h.

Non so se e' una buona idea... potresti avere il complatore
configurato male, sembrano essere path di sistema in
cui il tuo compilatore dovrebbe gia' andare a cercare i .h
Invece di specificare il path completo sarebbe meglio
cercare e sistemare il problema nella configurazione dell'ambiente.

> Se faccio rv = SCardEstablishContext(); Mi dice che non ho tutti gli
> argomenti come giusto che sia.
> ma se faccio rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL,NULL,
> &hContext);
> mi becco undefined reference to `SCardEstablishContext'

Potrebbe essere un errore del linker: devi aggiungere il riferimento
alla libreria
in cui si trova questa funzione.

Quando chiedi aiuto su un NG ricordati di indicare sempre che
compilatore usi
e soprattutto il testo esatto dell'errore.

ciao
Giacomo


michelangelo giacomelli

unread,
Dec 23, 2009, 8:28:04 AM12/23/09
to
Il 23/12/2009 11:56, luca72 ha scritto:
> Ciao mi trovo questo errore, quando faccio questa operazione
> rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
>
> premetto che ho dovuto cambiare alcuni include perch� altrimenti

> nontrovava il file ad esempio ho dovuto cambiare:
> #include </usr/local/include/PCSC/pcsclite.h> nel file winscard.h
> perch� lui puntava a PCSC/pcsclite.h ed

> #include </usr/local/include/PCSC/wintypes.h> nel file pcsclite.h
> perch� lui puntava a /PCSC/wintypes.h.

> Se faccio rv = SCardEstablishContext(); Mi dice che non ho tutti gli
> argomenti come giusto che sia.
> ma se faccio rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL,NULL,
> &hContext);
> mi becco undefined reference to `SCardEstablishContext'
>
> Avete qualche dritta
>
> Saluti
>
> Luca
si man gcc

scherzi a parte che opzioni passi al compilatore?

devi usare:
* I (i maiuscolo) per specificare il percorso degli include
* L (l maiuscolo) per specificare il percorso delle librerie
* l (l minuscolo per specificare il nome della/a libreria

ex:

-I/usr/include/MIA_LIBRERIA
-L/usr/lib -lMIA_LIBRERIA1 -lMIA_LIBRERIA2

dove MIA_LIBRERIA* sul file sistem sar� qualcosa del tipo:
/user/lib/libMIA_LIBRERIA*.so

spero tu riesca a risolvere...
non � che il compilatore e il linker magicamente possono sapere dove
stanno i tuoi include e librerie eh...

Non conosco questa libreria in particolare ma su linux spesso librerie
pi� complesse hanno una utiliti a riga di comando per recuperare i flags
da passare al gcc
ad esempio per l'SDL:
sdl-config --cflags (per compilatore)
sdl-config --libs (per linker)

luca72

unread,
Dec 23, 2009, 9:44:48 AM12/23/09
to
On 23 Dic, 14:28, michelangelo giacomelli <michelange...@blu.it>
wrote:

> Il 23/12/2009 11:56, luca72 ha scritto:
>
> > Ciao mi trovo questo errore, quando faccio questa operazione
> > rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
>
> > premetto che ho dovuto cambiare alcuni include perchè altrimenti

> > nontrovava il file ad esempio ho dovuto cambiare:
> > #include </usr/local/include/PCSC/pcsclite.h> nel file winscard.h
> > perchè lui puntava a PCSC/pcsclite.h ed

> > #include </usr/local/include/PCSC/wintypes.h> nel file pcsclite.h
> > perchè lui puntava a /PCSC/wintypes.h.

> > Se faccio rv = SCardEstablishContext(); Mi dice che non ho tutti gli
> > argomenti come giusto che sia.
> > ma se faccio rv = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL,NULL,
> > &hContext);
> > mi becco undefined reference to `SCardEstablishContext'
>
> > Avete qualche dritta
>
> > Saluti
>
> > Luca
>
> si man gcc
>
> scherzi a parte che opzioni passi al compilatore?
>
> devi usare:
> * I (i maiuscolo) per specificare il percorso degli include
> * L (l maiuscolo) per specificare il percorso delle librerie
> * l (l minuscolo  per specificare il nome della/a libreria
>
> ex:
>
> -I/usr/include/MIA_LIBRERIA
> -L/usr/lib -lMIA_LIBRERIA1 -lMIA_LIBRERIA2
Grazie, mancava la libreria nei link settings.
Ho risolto

Auguri a tutti

Luca
>
> dove MIA_LIBRERIA* sul file sistem sarà qualcosa del tipo:


> /user/lib/libMIA_LIBRERIA*.so
>
> spero tu riesca a risolvere...

> non è che il compilatore e il linker magicamente possono sapere dove


> stanno i tuoi include e librerie eh...
>
> Non conosco questa libreria in particolare ma su linux spesso librerie

> più complesse hanno una utiliti a riga di comando per recuperare i flags

0 new messages