Sto cercando di usare f2py per interfacciare i miei programmi python con i miei moduli Fortran.f2py con il compilatore Intel Fortran
Sono su una piattaforma Win7.
Io uso l'ultimo Anaconda 64 (1.7) come stack Python + NumPy.
Il mio compilatore Fortran è l'ultimo compilatore Intel Fortran 64 (versione 14.0.0.103 Build 20130728).
Ho sperimentato una serie di questioni durante l'esecuzione f2py -c -m PyModule FortranModule.f90 --fcompiler=intelvem
L'ultimo, che non riesco a risolvere è che sembra che la sequenza delle bandiere f2py/distutils passa al compilatore non lo fa corrisponde a ciò che ifort si aspetta.
Ricevo una serie di messaggi di avviso relativi alle opzioni sconosciute quando viene invocato ifort.
ifort: command line warning #10006: ignoring unknown option '/LC:\Anaconda\libs'
ifort: command line warning #10006: ignoring unknown option'/LC:\Anaconda\PCbuild\amd64'
ifort: command line warning #10006: ignoring unknown option '/lpython27'
ho il sospetto questo è legato agli errori che ricevo da linker alla fine
error LNK2019: unresolved external symbol __imp_PyImport_ImportModule referenced in function _import_array
error LNK2019... and so forth (there are about 30-40 lines like that, with different python modules missing)
e si conclude con una pianura
fatal error LNK1120: 42 unresolved externals
La mia ipotesi è che questo è dovuto al fatto il flag/link manca nella sequenza di opzioni. Per questo motivo, le opzioni/l/L non vengono passate al linker e il compilatore crede che queste siano indirizzate a lui.
Il comando ifort generato da f2py assomiglia a questo:
ifort.exe -dll -dll Pymodule.o fortranobject.o FortranModule.o module-f2pywrappers2.o -LC:\Anaconda\libs -LC:\Anaconda\PCbuild\amd64 -lPython27
ho idea perché il "-dll" viene ripetuto due volte (ho dovuto cambiare quella bandiera da un originale "-shared").
Ora, ho cercato di esaminare i codici f2py e distutils ma non ho capito come schiacciare un ulteriore/link nell'output del comando. Non sono nemmeno stato in grado di individuare dove viene generato questo output.
Se qualcuno ha riscontrato questo problema in passato e/o potrebbe avere qualche suggerimento, lo apprezzerei molto.
Grazie per il vostro tempo
ho incontrato problemi come questi, ma sfortunatamente non sono riuscito a trovare un modo per aggirarli; Ho finito per creare un Makefile che ha accartocciato tutto insieme. Ecco il Makefile: http://pastebin.com/ChSxLzSb. – bdforbes
Grazie per il file! Ho avuto la possibilità di vederlo solo oggi. Finì per essere un problema enorme per farlo funzionare a causa di un sacco di percorsi giocherellando e vari file da recuperare. Ma alla fine sono stato in grado di fare ciò che volevo. Penso che sia molto difficile trovare una risposta definitiva in quanto sembra altamente dipendente dalla piattaforma e dalle catene di strumenti installate. – Tesla
Quindi qual è stato il tuo approccio alla fine? Sei riuscito a incidere le distutili nella sottomissione? – bdforbes