PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/01/07 13:17:54
Name MoreThanAir
Subject 포트란 문법 익숙하신 분 계신가요?
포트란을 처음 써봐서 문법이 익숙치 못합니다.

특히 배열이나 스트럭쳐 개념은 더 그렇네요.

포트란에서 씨의 DLL을 사용할 생각입니다. 일단 간단한 함수 호출과 인자 주고 받기는 성공했는데요.

포트란에서 TYPE형의 배열을 어떤식으로 인자로 넘기는지 감이 안옵니다.

PROGRAM UseCDll
USE kernel32
IMPLICIT NONE

INTEGER i,ret

TYPE detectordata
INTEGER::id
INTEGER::volume
INTEGER::occupancy
REAL::speed
REAL::density
END TYPE detectordata

TYPE rampdata
INTEGER::id
REAL::rate
END TYPE rampdata

POINTER(p_USERFUNC,compute)
INTEGER(HANDLE)::dll_handle
INTEGER(BOOL)::free_status
TYPE(detectordata),ALLOCATABLE::detector(:)
TYPE(rampdata),ALLOCATABLE::ramp(:)

INTERFACE
SUBROUTINE compute (num,d,r) BIND(C)
USE,INTRINSIC :: ISO_C_BINDING
TYPE detectordata
INTEGER::id
INTEGER::volume
INTEGER::occupancy
REAL::speed
REAL::density
END TYPE detectordata

TYPE rampdata
INTEGER::id
REAL::rate
END TYPE rampdata

INTEGER(C_INT), VALUE::num
TYPE(detectordata)::d
TYPE(rampdata)::r
END SUBROUTINE compute
END INTERFACE

ALLOCATE(detector(2))
detector(:)%id=0
detector(:)%volume=0
detector(:)%occupancy=0
detector(:)%speed=0
detector(:)%density=0

ALLOCATE(ramp(2))
ramp(:)%id=0
ramp(:)%rate=0

detector(1)%id=1
detector(1)%volume=20
detector(1)%occupancy=7
detector(1)%speed=100
detector(1)%density=70

detector(2)%id=2
detector(2)%volume=50
detector(2)%occupancy=3
detector(2)%speed=80
detector(2)%density=50

write (*,*) "Loading library..."
dll_handle = LoadLibrary ("dllcomp.dll"C)

write (*,*) "Getting routine address..."
p_USERFUNC = GetProcAddress (dll_handle,"compute"C)

call compute(2,detector,ramp)

DO i=1,2
print *,ramp(i)
END DO

write(*,*) "Unloading library..."
free_status = FreeLibrary (dll_handle)

END PROGRAM UseCDll

위와 같은 소스에서 call compute 부분이 C 함수를 호출하는 부분인데

'The type of the actual argument differs from the type of the dummy argument'라는 에러가 생깁니다.

아마 subroutine의 선언부와 실제 사용에서 인자들이 형이 맞지 않는거 같은데요.

어떻게 함수로 넘길 수 있는지 조언 좀 부탁드립니다.


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
48057 무통장 입금의 거래 내역 확인할수 있을까요? [2] 리휜5708 09/01/07 5708
48056 컴활 상설 검정 질문 [4] TongKi2066 09/01/07 2066
48055 방학을 맞아 책을 한번 읽어 보려고 합니다. [1] 독을차고1527 09/01/07 1527
48054 그래픽 카드를 업그레이드 하려고 합니다 [3] 학교얘들1800 09/01/07 1800
48053 형상상(狀), 모양상(像)의 차이가 뭐죠? [2] Doraeomn5891 09/01/07 5891
48052 노트북 질문입니다 [3] 스킨로션1825 09/01/07 1825
48050 컴퓨터 본체 이정도로 맞추려면 가격이 어느정도 되죠? [4] 공방풀업아칸2188 09/01/07 2188
48049 포트란 문법 익숙하신 분 계신가요? MoreThanAir2736 09/01/07 2736
48048 게임기 Wii 질문이요! [2] 서현♡1939 09/01/07 1939
48047 수학에서 답을 보지 마라 라는 것은 어떤 의미인가요? [9] YUIv2245 09/01/07 2245
48046 하드디스크 안에 자료문제입니다. [6] MoreThanAir2092 09/01/07 2092
48045 간단한 토익 문제 또 질문입니다 ㅡ.ㅡ; [6] 사랑님2113 09/01/07 2113
48043 SATA방식의 하드디스크는 master/slave 설정 어떻게 하나요? [4] EsPoRTSZZang16033 09/01/07 16033
48041 요즘 삼국지 영걸전을 즐기고 있습니다. [6] 사랑스런피치2674 09/01/07 2674
48040 일본애니 1월 신작 추천 좀 해주세요. [6] honnysun2379 09/01/07 2379
48039 카오스 런처 원본소스 구할수 없을까요? 이프2285 09/01/07 2285
48037 운동할떄 발바닥이 너무아픕니다. [6] 이센스2195 09/01/07 2195
48036 같이즐겜하시분찾습니다 [6] Yourfragrance..1847 09/01/07 1847
48035 갑자기 익스플로어가 폭주 합니다 이거 왜 이런가요??ㅠㅠ [1] 강마에1669 09/01/07 1669
48034 이성은 선수 니은지지는 왜 자꾸 쓰는건가요?? [19] Dean & Sam3643 09/01/07 3643
48033 내일(아니 오늘!!) 소개팅을 합니다. [4] 핫도그2231 09/01/07 2231
48032 해리포터와 마법사의 돌에서 [4] 똥줄2298 09/01/07 2298
48031 유머게시판에 움짤을 올릴려고 하는데 [2] skyk1545 09/01/07 1545
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로