2009-02-03 5 views
6

Ho provato un centinaio di cose e non riesco a ottenere il mio file .so per interfacciarsi con php usando swig. Posso generare i file, quindi ho dovuto compilare Zend e creare un collegamento con questo per creare il .so, ma ora mantiene il fault sul carico adesso.Come utilizzare swig per generare l'interfaccia php per C++ in modo

Qualcuno può dirmi se come utilizzare swig per generare un'interfaccia PHP per una libreria C++? Lo documentation sul sito Web di swig non è utile.

+0

ho ottenuto sorso di funzionare con python. Non sono sicuro di quanto sia simile l'esperienza, ma posso scrivere quello che ho fatto per questo se sei interessato. – mabbit

+0

Dalla lettura dei documenti è molto diverso da PHP. Non riesco a capire come compilare e lavorare. – Lodle

risposta

1

This example sembra informativo. L'hai provato?

+0

questo è quello che ho provato e non riuscivo a farlo funzionare anche io, – Lodle

+0

. Ricevo "Impossibile trovare il file 'example.i'" dopo aver eseguito "swig -php example.i". – Volomike

+0

Hai creato il file example.i? – Gaius

0

Ciao Controlla bene i permessi della cartella in cui risiede il tuo codice PHP. Ho affrontato lo stesso problema. In effetti stavo facendo anche qualche file in lettura/scrittura nella stessa directory e ho dovuto impostare i permessi per il mio progetto php di conseguenza, altrimenti dicevo Nessun dato ricevuto e quando vedo nel registro degli errori di apache vedo Segmentation Fault .

Quindi si prega di controllare. questo può aiutare.

E sì, la documentazione nel sito Swig non è ancora molto utile per gli sviluppatori PHP.

0

Sono rimasto bloccato nella stessa situazione ma poi la risposta di Gaius ha chiarito che il file example.i deve essere creato per primo, non è solo un parametro di fantasia per dire swig il nome del progetto. Paragraph 2.3.1 of that guide! dice di cosa tratta questo file example.i

/* File : example.i */ 
%module example 
%{ 
/* Put headers and other declarations here */ 
extern double My_variable; 
extern int fact(int); 
extern int my_mod(int n, int m); 
%} 

extern double My_variable; 
extern int fact(int); 
extern int my_mod(int n, int m); 
Problemi correlati