2010-01-27 30 views
1

我使用gcc將幾個Fortran源文件編譯爲Windows平臺上的*.lib*.dll,使用最新版本mingw。使用的gcc是版本3.輸出的結果是arpack_win32.dllblas_win32.dlllapack_win32.dllGCC生產的Dll與Intel Visual Fortran不兼容?

然後我想要編譯sssimp.farpack_win32.dllblas_win32.dlllapack_win32.dll使用Intel visual fortran compiler for Windows,因爲sssimp.f使用這些dll。但我得到了印象(from Intel support forum),這是而不是可能。

我的印象是否正確?或者只要我可以生成底層的lib和dll(不管在哪個編譯器和它的年代),我可以將它們用作我的基本庫和dll,並且可以從任何現代或老,編譯器?

回答

1

g77使用與IVF不同的ABI,是的。所以除非IVF有一些g77/f2c兼容性選項,否則它不會起作用。

最簡單的解決方案可能是使用IVF來編譯庫。

+0

@janneb,恐怕用f77編寫的arpack代碼裏面有一些IVF不兼容的語言結構.. – Graviton 2010-01-27 02:02:56

+0

就這樣,將代碼與不兼容的調用約定結合起來就是行不通的。 – janneb 2010-01-27 02:33:34

0

正如已經指出的那樣,混合使用不同調用約定的編譯器可能會非常困難。

在英特爾論壇上的答案指出了一個版本的arpack翻譯成Fortran 90 - http://people.sc.fsu.edu/~burkardt/f_src/arpack/arpack.html - 你能用它嗎?另請參閱http://people.sc.fsu.edu/~burkardt/f_src/lapack/lapack.htmlhttp://people.sc.fsu.edu/~burkardt/f_src/blas1_s/blas1_s.html

或者,英特爾Visual Fortran應該能夠使用合適的編譯器選項編譯Fortran 77。它拒絕什麼語言結構?

+0

不確定翻譯的f90版本---作者本人澄清說fortran 90版本可能粗略,不完整或完全錯誤(http://people.sc.fsu.edu/~burkardt/f_src/f_src.html) 。就我所見,整個ARPACK包中只有一兩個例程被翻譯。 – Graviton 2010-01-27 02:58:05

+0

我讀到「使用是你的責任/風險」 - 仍然值得一試,看看它是否適用於你的編譯器,併爲測試用例產生正確的答案。 – 2010-01-27 08:16:43