2014-12-16 2 views
4

저는 자체 모듈에 GNU gfortran 컴파일러 (Cygwin에서)를 사용하고 있습니다. 좋은 예가 컴파일 단계에서부터 시작하여 잘 못된 이름을 다루고 ccall을 통해 Julia의 서브 루틴을 호출 할 것입니다. 필자가 본 대부분의 예는 처음 두 단계를 건너 뜁니다. Julia에 포트란 코드 통합

그래서 내가 포트란 (90)라는 이름의 파일 'f90tojl.f90'에서 다음과 같은 모듈이 상상 :

module m 
contains 
    integer function five() 
     five = 5 
    end function five 
end module m 

이 예는 here에서입니다.

gfortran -shared -O2 f90tojl.f90 -o -fPIC f90tojl.so 

그리고 내, 틀림없이 흔들리는, 내가 지금 같은 기능 다섯 가지를 호출 할 수 있어야 줄리아의 문서를 읽는 것이 좋습니다 이해 :

ccall((:__m_MOD_five, "f90tojl"), Int,()) 
공유 라이브러리를 생성하기 위해 다음과 같이 내가 gfortran 함께 컴파일

나를 위해 작동하지 않았습니다. 나는 'error compiling anonymous: could not load module f90tojl...을 얻는다. 누구나 나를 계몽 할 수 있니? 나는 바보 같은 짓을하고있다.

doc 공식에서 강조는 C이다. C++에 대해서도 this을 알고있다. R과 Python에서 기세 - 나는 Cython과 Rcpp를 염두에두고 - C/C++로 보인다. 이 question과 유사하게 Julia와 Fortran 및 Julia를 C/C++로 인터페이스하는 것이 얼마나 쉬운 지 알고 싶습니다.

+0

사용중인 플랫폼/포트란 컴파일러에 따라 다릅니다. 포트란과의 인터페이스는 공급 업체에 따라 다릅니다. – cup

+1

귀하의 C++ 링크는 Julia 0.1의 최신판이며 C++ interop의 현재 작업은 [Cxx.jl] (https://github.com/Keno/Cxx.jl)에 있습니다 – IainDunning

+0

OP의 게시물 (줄리아 - 사용자)는 [여기] (https://groups.google.com/d/topic/julia-users/zMtEggnGUAM/discussion)에서 찾을 수 있습니다. – Stefan

답변

8

Fortran과 C 호출은 설명서에서 설명한 것과 기본적으로 동일합니다. 사람들이 포장하려는 코드가 훨씬 적기 때문에 예제가 훨씬 적습니다. 줄리아 C는 줄리아에서 아주 쉽고, 매우 즐겁습니다. Julia의 속도를 높이기 위해 일반적으로 R이나 Python을 사용하지 않았지만 이미 작성된 품질 코드를 더 많이 사용했습니다.

Julia의 표준 라이브러리 자체는 Fortran 코드와 통합하는 좋은 예입니다. ARPARK의 경우 Julia wrapper입니다. Base 바깥쪽에는 glmnet이 포트란으로 작성되었으며 Julia wrapper for it (GLMNet.jl)이 있습니다.

현대 Fortran 구분의 중요성을 알 수 없습니다.

+1

이제 질문이 상당히 바뀌 었습니다. 줄리아 사용자 메일 링리스트에 게시해야한다고 생각합니다. "도서, 도구, 소프트웨어 라이브러리, 튜토리얼 또는 기타 오프 사이트 리소스를 추천하거나 찾도록 요청하는 질문은 스택 오버플로에 대한 주제가 아닙니다. 독단적 인 답변과 스팸을 끌어 당깁니다. " – IainDunning

+1

나는 지금 당장 떠날 것입니다. – IainDunning

+0

julia-users에 게시했습니다. 그리고 질문을 좀 더 구체적으로하려고 노력했습니다. – vathymut