O GCC produziu DLLs não compatíveis com a Intel Visual Fortran?
-
23-09-2019 - |
Pergunta
Eu usei o GCC para compilar alguns arquivos de origem fortran em *.lib
e *.dll
na plataforma Windows, usando a versão mais recente de Mingw . O GCC usado é a versão 3. O resultado da saída é arpack_win32.dll
, blas_win32.dll
e lapack_win32.dll
.
Eu então quero compilar sssimp.f contra o arpack_win32.dll
, blas_win32.dll
e lapack_win32.dll
usando Intel Visual Fortran Compiler for Windows, Porque sssimp.f
usa essas DLLs. Mas eu tive a impressão ( do fórum de suporte da Intel) que isso é não possível.
Minha impressão está correta? Ou é que, desde que eu possa produzir as LIBs e DLLs subjacentes (independentemente de qual compilador e quantos anos ele tem), posso usá -las como minhas libs e DLLs base, e posso vincular -se a eles de qualquer, moderno ou Velho, compilador?
Solução
O G77 usa um ABI diferente da fertilização in vitro, sim. Portanto, a menos que a fertilização in vitro tenha alguma opção de compatibilidade G77/F2C, não vai funcionar.
A solução mais fácil para você provavelmente é usar a fertilização in vitro para compilar as bibliotecas também.
Outras dicas
Como já foi apontado, é provável que os compiladores de mistura com diferentes convenções de chamadas sejam muito difíceis.
Essa resposta no fórum Intel apontou uma versão de Arpack traduzida para fortran 90 - http://people.sc.fsu.edu/~burkardt/f_src/arpack/arpack.html - Você pode usar isso? Veja também http://people.sc.fsu.edu/~burkardt/f_src/lapack/lapack.html e http://people.sc.fsu.edu/~burkardt/f_src/blas1_s/blas1_s.html
Ou a Intel Visual Fortran deve ser capaz de compilar o Fortran 77 usando opções de compilador adequado. Que construções de linguagem está rejeitando?