Domanda

Sto provando a compilare il mio programma su Windows tramite Cygwin con il comando di compilazione:

g++ ping.cpp -I./include -L./lib -lchartdir50

Sto usando un'API chiamata ChartDirector che disegna grafici per me. Non ho mai collegato librerie in questo modo prima (di solito lo faccio tramite Visual Studio) quindi sono un po 'nuovo in questo. Ho un elenco molto ampio di errori, quindi non li elencherò tutti, ma ne elencherò uno solo per chiarire il tipo di errori del linker che sto ricevendo:

(.text

Sto provando a compilare il mio programma su Windows tramite Cygwin con il comando di compilazione:

g++ ping.cpp -I./include -L./lib -lchartdir50

Sto usando un'API chiamata ChartDirector che disegna grafici per me. Non ho mai collegato librerie in questo modo prima (di solito lo faccio tramite Visual Studio) quindi sono un po 'nuovo in questo. Ho un elenco molto ampio di errori, quindi non li elencherò tutti, ma ne elencherò uno solo per chiarire il tipo di errori del linker che sto ricevendo:

<*>

Tutti questi sono riferimenti indefiniti agli errori "xxx".

Ho un sacco di file di intestazione in ./include e una libreria chiamata chartdir50.lib in ./lib

Cosa c'è che non va nella mia linea di compilation?

ZN9BaseChartD1Ev[BaseChart::~BaseChart()]+0x4f): undefined reference to '_CBaseChart_destroy'

Tutti questi sono riferimenti indefiniti agli errori "xxx".

Ho un sacco di file di intestazione in ./include e una libreria chiamata chartdir50.lib in ./lib

Cosa c'è che non va nella mia linea di compilation?

È stato utile?

Soluzione 3

Hmm ... è strano. Sto usando un sistema a 64 bit, ma per qualche motivo l'ho provato con la libreria a 32 bit e compilato. Grazie!

Altri suggerimenti

Non sono sicuro ma .lib è stato compilato con Visual C ++?

Se sì, non penso che sia compatibile con GCC, devi compilare la libreria con GCC / G ++ e usare quel file o usare un binario compatibile se non hai accesso al sorgente.

Non ho mai usato quella libreria prima, ma quando cercato su Google , ho notato che altre persone cercano come - lchartdir invece di -lchartdir50 , quindi dovresti provarlo.

Suppongo che anche lib sia stata creata con gcc.

AFAIK .lib è una libreria statica, quindi non è necessario puntarla con l'opzione -l del compilatore.

Usalo come un altro file nella riga di comando, come

g ++ ping.cpp -I./include -L./lib {percorso della libreria qui} /chartdir50.lib

hth.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top