C에서 포트란 서브루틴 호출 관련 질문입니다....

gun802000의 이미지

플그램 작성중에 문제가 하나 생겼는데여...

main은 C++이구여 포트란 서브루틴을 여러개 불러서 사용하고 있습니다.

근데 main에서 변수 하나를 이중 동적 배열로 선언했는데여....

그 부분에서 계속 엑세스 에러가 나네여...

double** AKTS;
AKTS = new double* [_NDOF];

for(sub_i = 0; sub_i {
AKTS[sub_i] = new double [_NDOF];
}

메인부분 변수구여...

이때 서브루틴을 불러와서 사용되는 부분은...

DO 10 J=1,NV
CALL VCZR(AKTS(1,J),NV)
10 CONTINUE

이렇게 작성되 있구여...

여기서 다시 VCZR이라는 서브루틴을 호출하는데여....

SUBROUTINE VCZR(A,N)
IMPLICIT DOUBLE PRECISION (A-H,O-Z)
DIMENSION A(N)
C
DO 10 I = 1,N
A(I) = 0.0D0
10 CONTINUE
C
RETURN
END

이렇게 되 있거든여...

근데 여기서 자꾸 엑세스 에러가 납니다...

뭐가 문제인지 모르겠는데여...

아시는 분 답변 좀 부탁드립니다...

체스맨의 이미지

포트란이든 C 든 다차원 배열은 내부적으로 1차원 배열처럼 할당됩니다.

예를 들면, double a[2][2] 는 내부적으로 double a[4] 처럼 할당된 것과 같습니다. 포트란 역시 마찬가지구요.

그래서 당연히 오류가 납니다.

또한 행,열 순서가 C 와 포트란이 반대라는 점도 유의하시기 바랍니다.
포트란-C 인터페이스 관련 자료를 찾으실 수 있을 겁니다.

Orion Project : http://orionids.org