Sto pianificando di utilizzare le librerie nel mio programma C++. Lo sviluppo sta accadendo su Linux ma l'applicazione è progettata per compilare sia su Linux che su Windows. Capisco l'equivalente diretto per le librerie condivise (.so) in Windows è DLL, giusto?Creazione di librerie di programmi in Windows e LINUX [C++]
In Linux utilizzando g ++, posso creare una libreria condivisa usando i flag -fPIC
e -shared
. AFAIK, non sono necessari altri cambiamenti di codice per una libreria condivisa. Ma le cose sono diverse in una DLL di Windows. Dovrei specificare le funzioni che devono essere esportate usando dllexport, giusto?
La mia domanda è come posso gestire questa situazione? Voglio dire dllexport non è valido in Linux e il compilatore darà un errore. Ma è richiesto in Windows. Quindi, come posso scrivere una funzione che verrà compilata su entrambe le piattaforme senza alcun cambio di codice?
compilatori utilizzato
- g ++ - LINUX
- VC++ - Windows
Qualsiasi aiuto sarebbe grande!
Grazie. Quale sarà il tipo di DLL creato in Windows? Sarà una dll COM? Ci sono possibilità di imbattersi in problemi di inferno della DLL? –
L'uso di dllexport non causa l'esposizione della dll al sistema COM. Le probabilità di inferno dipendono da come si distribuisce la DLL e l'applicazione. Se installi sempre le DLL richieste dall'app, il problema relativo a questa DLL non è un problema. –
@sean e: Grazie. Installerò sempre l'app della DLL richiesta nella directory dell'applicazione. A volte ci possono essere piccoli aggiornamenti che sostituiranno solo una DLL piuttosto che l'intera applicazione. Sarà un problema? –