Delphi [DCC Error] E2597 error: undefined reference to ‘std::__ndk1::__next_prime(unsigned int)’ on include static library
Soluzione all’Errore di Linking E2597 in Delphi
Durante lo sviluppo di applicazioni in Delphi, potrebbe capitare di incontrare errori di linking. Uno degli errori comuni è:
1 |
[DCC Error] E2597: undefined reference to 'std::__ndk1::__next_prime(unsigned int)' |
Premessa
L’errore E2597 può essere causato da vari fattori, tra cui:
- Configurazioni errate nei pacchetti runtime.
- Dipendenze mancanti o conflitti tra librerie.
- Inclusione non corretta di librerie statiche, come la
libc++
.
La Problematiche con le Librerie Statiche
Quando si include una libreria statica come libc++
nel progetto Delphi, potrebbe verificarsi l’errore E2597 a causa di riferimenti non risolti. Questo avviene perché la libreria statica libc++
potrebbe non essere configurata correttamente per il linking statico completo.
La Soluzione
La soluzione consiste nel non includere la libreria libc++
staticamente e passare al linker il parametro -lstdc++
, assicurandosi inoltre di includere la libreria libc++
nel deployment affinché venga linkata dinamicamente.
Passaggi per la Soluzione
1. Modifica delle Opzioni del Linker
Apri le opzioni del progetto e aggiungi il parametro -lstdc++
nelle opzioni del linker:
1 |
Project > Options > Delphi Compiler > Linking > Link with dynamic RTL: True |
2. Aggiornamento del Deployment
Assicurati che la libreria libc++
sia inclusa nel deployment del progetto. Puoi fare questo andando nelle opzioni del progetto e aggiungendo la libreria libc++_shared.so
:
1 |
Project > Deployment > Add Files > libc++_shared.so |
3. Esempio di Configurazione del File .dproj
Puoi anche modificare direttamente il file .dproj
per assicurarti che il parametro del linker sia incluso:
1 2 3 4 5 |
<LinkOptions> <ExtraOptions>-lstdc++</ExtraOptions> </LinkOptions> |
Conclusione
Seguendo questi passaggi, dovresti essere in grado di risolvere l’errore di linking E2597 in Delphi. Ricorda di verificare anche altre possibili cause dell’errore, come dipendenze mancanti o conflitti tra pacchetti. Una configurazione corretta delle opzioni del linker e del deployment garantirà che il tuo progetto funzioni senza problemi.
Nota: Se il problema persiste, potrebbe essere utile ricompilare le librerie statiche coinvolte o verificare ulteriormente le dipendenze del progetto per identificare eventuali altre cause dell’errore.