Question

J'essaie de conformer mon programme sous Windows via Cygwin avec la commande de compilation:

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

J'utilise une API appelée ChartDirector, qui dessine des graphiques pour moi. Je n'avais jamais lié de bibliothèque de cette façon auparavant (habituellement, je le fais par le biais de Visual Studio), donc je suis un peu nouveau dans ce domaine. J'ai une très grande liste d'erreurs, donc je ne les énumérerai pas toutes, mais je vais en énumérer une juste pour clarifier le type d'erreurs de l'éditeur de liens que je reçois:

(.text

J'essaie de conformer mon programme sous Windows via Cygwin avec la commande de compilation:

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

J'utilise une API appelée ChartDirector, qui dessine des graphiques pour moi. Je n'avais jamais lié de bibliothèque de cette façon auparavant (habituellement, je le fais par le biais de Visual Studio), donc je suis un peu nouveau dans ce domaine. J'ai une très grande liste d'erreurs, donc je ne les énumérerai pas toutes, mais je vais en énumérer une juste pour clarifier le type d'erreurs de l'éditeur de liens que je reçois:

<*>

Tous ces éléments constituent une référence non définie aux erreurs 'xxx'.

J'ai un tas de fichiers d'en-tête dans ./include et une bibliothèque appelée chartdir50.lib dans ./lib

Qu'est-ce qui ne va pas avec ma ligne de compilation?

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

Tous ces éléments constituent une référence non définie aux erreurs 'xxx'.

J'ai un tas de fichiers d'en-tête dans ./include et une bibliothèque appelée chartdir50.lib dans ./lib

Qu'est-ce qui ne va pas avec ma ligne de compilation?

Était-ce utile?

La solution 3

Hmm ... c'est étrange. J'utilise un système 64 bits, mais pour une raison quelconque, je l'ai essayé avec la bibliothèque 32 bits et il a été compilé. Merci!

Autres conseils

Je ne suis pas sûr mais .lib a été compilé avec Visual C ++?

Si oui, je ne pense pas que ce soit compatible avec GCC, vous devez compiler la bibliothèque avec GCC / G ++ et utiliser ce fichier ou utiliser un binaire compatible si vous n'avez pas accès à la source.

Je n'utilisais jamais cette bibliothèque auparavant, mais quand je googlé , j'ai remarqué que d'autres personnes essayaient comme - lchartdir au lieu de -lchartdir50 , vous devez donc l'essayer.

Je suppose que lib a également été créé avec gcc.

AFAIK .lib est une bibliothèque statique, vous n'avez donc pas besoin de la pointer avec le commutateur -l du compilateur.

Utilisez-le simplement comme un autre fichier en ligne de commande, comme

g ++ ping.cpp -I./include -L./lib {chemin vers lib ici} /chartdir50.lib

hth.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top