2012-03-14 7 views
6

En nuestra aplicación utilizamos varias bibliotecas vinculadas dinámicamente. Recientemente actualizamos la versión de una de estas bibliotecas. Los desarrolladores de esa biblioteca están proporcionando un método principal desde esta nueva versión (sin hacer nada más que imprimir Hello World).Cómo ignorar el método principal de una biblioteca vinculada dinámica en C++

El problema es que estamos usando GTest y GMock, que generan su propio método principal. Cuando ahora ejecutamos nuestro binario de prueba, obtenemos "Hello World", por lo que se está tomando el método principal equivocado.

¿Cómo podemos forzar el método principal de las pruebas que se utilizarán?

ACTUALIZACIÓN: Parece ser un problema de GMock/GTest. El método principal normalmente se genera, pero este no es el caso, ya que ahora encuentra un método principal ya existente.

Respuesta

5

No hay formas de evitar su situación. Tendrás que eliminar el principal de la biblioteca compartida. Simplemente no pertenece allí.

+0

Estoy totalmente de acuerdo con su afirmación. Será horrible lograr que los desarrolladores de esa biblioteca lo cambien. Esperaba un truco rápido y sucio para "ignorar" ese método principal. –

+0

@ W.Goeman Si es una biblioteca de código abierto, puede hacerlo usted mismo, ¿no? Si es una biblioteca comercial, entonces deberían hacerlo. En cualquier caso, es un problema grave para una biblioteca compartida definir el main(). –

+1

contactamos con los desarrolladores de esa biblioteca y nos prometieron una solución. Un método principal en una biblioteca parece ser un problema serio de hecho :) –

0

Tuve un problema similar con dos bibliotecas con métodos principales, que se resolvió al cambiar el orden de las bibliotecas al enlazador.

Cuestiones relacionadas