2013-08-04 2 views
2

나는 Arpack과 Arpack ++을 Visual Studio 2010과 함께 Windows 7에서 작동시키고 swig를 사용하여 C#에서 사용할 수있는 인터페이스를 만들려고합니다. 이것은 기본적으로 C#으로 고유 벡터 문제를 해결하기위한 모든 추가 시도를 측정하기위한 벤치 마크를 작성하는 것입니다.하지만 먼저이 작업이 필요합니다.Arpack (++) windows에

g77이 더 이상 MinGW와 함께 제공되는 Fortran 컴파일러가 아니기 때문에 다소 변경되었지만 this guide을 사용하여 Arpack을 컴파일 할 수있었습니다. 대신 gfortran을 얻습니다. ARmake.inc에 대한 추가 변경 사항에는 오류가 발생한 -cg89 옵션이 포함되어 있습니다 (어떤 목적이 g77로 채워 졌는지 모르지만 gfortran은이를 허용하지 않습니다).

"적어도 옵션이 있든 없든 지금 컴파일되었습니다." 나는 dllwrap에 계속했다. 그러나 라이브러리 파일 libg2c이 최신 버전의 MinGW에 포함되어 있지 않으므로 -lg2c 옵션이 허용되지 않았습니다. 옵션없이 시도하면 내 .o 및 해당 .f - 파일 중 일부에서 정의되지 않은 참조에 대한 오류가 발생합니다. 어떤 라이브러리 파일을 사용해야합니까? 내가 뭔가 다른 것을 눈부시게 잘못하고 있니?

답변

1

키가 dllwrap 대신 gfortran 인 것으로 나타났습니다. MinGW와 msys를 설치 한 후 사용한 전체 과정은 다음과 같습니다

1) 설치 후 스크립트를 실행하고 gcc가 누락되었다고 불평하지 않는지 확인하십시오. 그런 경우 해당 패키지를 설치하십시오.

msys\1.0\postinstall\pi.bat 

2) ARPACK 파일과 msys\1.0\home\yourname\ARPACK

3) 편집 ARmake.inc에 패치를 추출하고에 FCFFLAGS 라인을 변경

FC  = gfortran 
#FFLAGS = -O -cg89 

4) 편집 UTIL/second.f이 가진 모든 것을 대체 . 이렇게하면 ETIME에 대한 오류가 방지됩니다. 확실하지 그것이 무엇하지만 http://blog.csdn.net/guillotine007/article/details/8636647

SUBROUTINE SECOND(T) 

    REAL  T 

    CALL CPU_TIME(T) 

    RETURN 

    END 

5)에 의해 제안 년대 DLL

gfortran -shared BLAS/*.o LAPACK/*.o SRC/*.o UTIL/*.o -o arpack_win32.dll 
에게) 파일

make lib 

6 .O 링크 대신 dllwrap의 gfortran 사용하여 만들 수 컴파일

7) 결과로 생성되는 dll은 MinGW 설치에서 얻을 수있는 libgcc_s_dw2-1.dll, libgfortran-3.dll, libquadmath-0.dll 등 다른 3 개의 dll에 의존합니다.

+0

나는이 질문이 아직 열려 있다는 것을 완전히 잊었다. 귀하의 의견을 보내 주셔서 감사합니다. 나는 그것을'dllwrap'으로 직접 풀었고 MinGW의 새로운 버전에서'-lg2c' 명령은'-lgfortran'으로 바뀌 었습니다. 아마'libgfortran-3.dll' 라이브러리에 링크되어있을 것입니다. – Arthur

+0

더 좋습니다. 다음 번에 다시 컴파일해야한다는 답변도 나옵니다. – user1318499

+0

안녕하세요, 혹시 컴파일 된 라이브러리가 있습니까? 몇 가지 조건 번호를 계산하고 싶지만 그 때문에 mingw를 설치하기를 꺼립니다. –