2010-08-17 7 views
2

저는 프로그램 작성자입니다 ... 나는 결코 프로그래머라고 부르지 않지만 C# 및 FORTRAN으로 프로그래밍합니다. 나는 FORTRAN 모델을 갖고 있는데,이 모델은 dll을 통해 C# 코드에 연결되어있다. 나는 dll의 메모리에 변수를 저장하기 위해 공통 블록을 가져야한다는 것을 발견했다. 나는 또한 하나 이상의 include 문을 사용할 수 없다는 것을 발견했다. 공통 변수에 대한 내 include 파일은 모두 Unlabeled이다. Chapman (2008) "FORTRAN 95/2003 for scientificists and engineers"는 "레이블이없는 COMMON 문은 절대로 사용해서는 안됩니다 ..."라고 말합니다.공용 블록, FORTRAN 및 DLL

공용 파일에서 메모리가 손상되지 않도록하려면 어떻게해야합니까? 나는 실험 할 수 있다고 생각하지만, 이것에 대한 조언을 받기를 바랬다. Microsoft Visual Studio 2008 내에서 Lahey-F 버전 7.2를 사용 중입니다.

누구나, 어떤 생각을 가지고 있습니까?

답변

0

필자가 알고 싶은 것을 모델링 한 프로그래머는 Chapman이 레이블이없는 COMMON을 사용해서는 안된다는 것을 설명합니다. 내가 기억할 수있는 것은 공백/이름없는 공통 블록이 전역 적이며 주 프로그램에 정의되어야한다는 것입니다.

확실한 방법은 간단한 Fortan DLL을 만든 다음이를 해체하여 공통 블록을 넣은 위치와 끝내는 위치를 확인하는 것입니다.

또한 명명 된 공통 단어를 사용하려고 할 때 오류 등의 예를 붙여 넣을 수 있다면 유용 할 것입니다. 무엇이 제대로 작동하지 않는지 정확히 이해하면 더 나은 해결책이 될 수 있습니다.

+0

감사합니다. 나는 조사 할 것입니다. – DavidAS

+0

게시 주셔서 감사합니다. 예, 모듈 사용에 동의합니다. 내 프로그램은 모듈을 중심으로 구성되어 있습니다. 그러나 모듈 (로컬 및 전역 (공용) 변수 포함)은 dll에서 사용될 때 메모리에 남아 있지 않습니다. 적어도, 나는 그것을 증명할 수 없었다. 누군가가 DLL에 활성 메모리에 개인 및 공용 변수를 유지하는 방법을 알고 있다면 제발 말해줘. 내 발견에 대한 문서는 그것을 증명하지 못합니다. – DavidAS

+0

@ M.S.B 고마워요. 그게 일반적인 Fortan 7/IV를 기억하는 방법입니다. 일반적으로 우리는 COMMON/DATAPOOL /을 사용했습니다. @David 나의 경험과 DLL에 대한 이해는 내가 이것을 결정할 수있는 유일한 방법은 작은 예제 DLL을 생성하고 소스와 함께 게시하여 디스 어셈블리를 볼 수 있다고 믿게한다. –