Sono in procinto di eseguire il porting di una grande applicazione C++ da Linux (gcc) a Windows (Visual C++ 2008) e sto avendo problemi di linker con i plugin. Su Linux questo non era un problema, dato che .so supporta la ricerca dei simboli di runtime, ma dll non sembra supportarlo.Visual C++ - Collegamento di plugin DLL contro EXE?
Alcune informazioni di base: L'applicazione (l'host), che ospita un ambiente di scripting, fornisce interfacce per i plugin (librerie condivise che vengono caricati in fase di esecuzione da chiamate API per gli script), permettendo l'host e l'API di scripting per essere esteso senza ricompilare l'applicazione host. Su Linux questo è solo questione di includere le intestazioni dell'applicazione host nel sorgente del plugin, ma su Windows sto ricevendo errori del linker. Non sono esattamente ciò di cui ho bisogno per collegare Visual C++ per risolvere questi simboli.
Una delle nostre dipendenze (open source, LGPL) ha dichiarazioni di preprocessore che utilizza per inserire __declspec (dllexport) e __declspec (dllimport) nelle intestazioni. Alcune ricerche precedenti indicano che potrei doverlo fare anch'io, ma vorrei essere sicuro prima di modificare un intero gruppo di intestazioni principali. (In precedenza ero in grado di farlo funzionare su MinGW, ma abbiamo deciso che supportare Visual Studio è un requisito per questo tipo di progetto commerciale.)
La mia domanda, in poche parole: Come collego runtime- dll caricati contro un exe host in Visual C++?
Modifica: Per chiarire il problema con un esempio, ho una classe nella mia applicazione host, oggetto, che rappresenta il tipo di base di un oggetto che si può accedere da uno script. Nei miei plugin ho un certo numero di classi che estendono lo oggetto per eseguire altre funzioni, come l'integrazione del supporto di rete o di nuovi elementi visivi. Ciò significa che la mia DLL deve essere collegata con i simboli dell'host host e non sono sicuro di come farlo.
Sto avendo un po 'di difficoltà a sistemarmi la testa. Se si dispone di un esempio concreto e lo si semplifica in alcune righe di codice, questo potrebbe aiutare chiunque ad aiutarti. – ojblass