2010-01-27 4 views
1

gcc를 사용하여 최신 플랫폼 인 mingw을 사용하여 Windows 플랫폼에서 몇 가지 포트란 소스 파일을 *.lib*.dll으로 컴파일했습니다. 사용 된 gcc는 버전 3입니다. 출력 결과는 arpack_win32.dll, blas_win32.dlllapack_win32.dll입니다. sssimp.f 그 DLL을 사용하기 때문에GCC에서 인텔 Visual Fortran과 호환되지 않는 Dll을 생성 했습니까?

나는 다음 Intel visual fortran compiler for Windows를 사용하여 arpack_win32.dll, blas_win32.dlllapack_win32.dll에 대한 sssimp.f를 컴파일합니다. 그러나 나는 이것이 이 아니라고 (from Intel support forum)이 가능하다는 인상을 받았다.

내 느낌이 정확합니까입니까? 아니면 기본 libs 및 dll을 생성 할 수있는 한 (컴파일러와 나이가 아무리 많아도) 기본 libs 및 dll로 사용할 수 있으며, 모든 라이브러리, DLL 또는 DLL과 연결할 수 있습니다. 오래된, 컴파일러?

답변

1

g77은 IVF와는 다른 ABI를 사용합니다. 따라서 IVF에 g77/f2c 호환성 옵션이 없으면 제대로 작동하지 않을 것입니다.

가장 쉬운 해결책은 IVF를 사용하여 라이브러리를 컴파일하는 것입니다.

+0

@janneb, f77로 작성된 arpack 코드에 IVF 호환되지 않는 언어 구조가 있음을 두려워합니다. – Graviton

+0

코드를 호환되지 않는 호출 규칙과 결합하면 작동하지 않을 수 있습니다. – janneb

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

+0

필자는 "use your responsibility/risk"라고 읽었습니다. 여전히 컴파일러에서 작동하는지 확인하고 테스트 케이스에 대한 정답을 제시 할 가치가 있습니다. –

관련 문제