2012-03-14 9 views
6

Nella nostra applicazione utilizziamo diverse librerie collegate dinamicamente. Abbiamo recentemente aggiornato la versione di una di queste librerie. Gli sviluppatori di quella libreria stanno fornendo un metodo principale da questa nuova versione (non facendo altro che stampare Hello World).Come ignorare il metodo principale da una libreria collegata dinamicamente in C++

Il problema è che stiamo utilizzando GTest e GMock, che generano il proprio metodo principale. Quando eseguiamo il nostro binario di test, otteniamo semplicemente "Hello World", quindi viene adottato il metodo principale sbagliato.

Come si può forzare il metodo principale dei test da utilizzare?

AGGIORNAMENTO: Questo sembra essere un problema GMock/GTest. Generalmente viene generato il metodo principale, ma non è così perché ora trova un metodo principale già esistente.

risposta

5

Non ci sono modi per aggirare la situazione. Dovrai rimuovere il main dalla libreria condivisa. Semplicemente non appartiene a questo.

+0

Concordo pienamente con la sua dichiarazione. Sarà orribile convincere gli sviluppatori da quella libreria a cambiarlo. Speravo in un trucco veloce e sporco per "ignorare" quel metodo principale. –

+0

@ W.Goeman Se è una libreria open source, puoi farlo da solo, no? Se è una biblioteca commerciale, allora dovrebbero farlo. In ogni caso, è un problema serio per una libreria condivisa definire il main(). –

+1

abbiamo contattato gli sviluppatori da quella libreria e hanno promesso una correzione. Un metodo principale in una libreria sembra essere davvero un problema serio :) –

0

Ho avuto un problema simile con due librerie con metodi principali, che è stato risolto modificando l'ordine delle librerie sul linker.

Problemi correlati