Pregunta

Estoy intentando completar mi programa en Windows a través de Cygwin con el comando de compilación:

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

Estoy usando una API llamada ChartDirector que dibuja gráficos para mí. Nunca he enlazado bibliotecas de esta manera antes (normalmente lo hago a través de Visual Studio), así que soy un poco nuevo en esto. Tengo una lista muy grande de errores, así que no los enumeraré todos, pero enumeraré uno solo para aclarar el tipo de errores del vinculador que estoy obteniendo:

(.text

Estoy intentando completar mi programa en Windows a través de Cygwin con el comando de compilación:

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

Estoy usando una API llamada ChartDirector que dibuja gráficos para mí. Nunca he enlazado bibliotecas de esta manera antes (normalmente lo hago a través de Visual Studio), así que soy un poco nuevo en esto. Tengo una lista muy grande de errores, así que no los enumeraré todos, pero enumeraré uno solo para aclarar el tipo de errores del vinculador que estoy obteniendo:

<*>

Todas estas son referencias indefinidas a errores 'xxx'.

Tengo un montón de archivos de encabezado en ./include y una biblioteca llamada chartdir50.lib en ./lib

¿Qué hay de malo en mi línea de compilación?

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

Todas estas son referencias indefinidas a errores 'xxx'.

Tengo un montón de archivos de encabezado en ./include y una biblioteca llamada chartdir50.lib en ./lib

¿Qué hay de malo en mi línea de compilación?

¿Fue útil?

Solución 3

Hmm ... eso es extraño. Estoy usando un sistema de 64 bits, pero por alguna razón lo probé con la biblioteca de 32 bits y la compilé. Gracias!

Otros consejos

No estoy seguro, pero .lib se ha compilado con Visual C ++?

Si sí, no creo que sea compatible con GCC, debe compilar la biblioteca con GCC / G ++ y usar ese archivo o usar un binario compatible si no tiene acceso a la fuente.

Nunca uso esa biblioteca antes, pero cuando buscó en Google , noté que otras personas lo intentaban como - lchartdir en lugar de -lchartdir50 , por lo que deberías intentarlo.

Suponiendo que lib también se creó con gcc.

AFAIK .lib es una biblioteca estática, por lo que no es necesario que apuntes con -l compiler switch.

Solo úselo como otro archivo en la línea de comandos, como

g ++ ping.cpp -I./include -L./lib {ruta a lib aquí} /chartdir50.lib

hth.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top