이 질문을 읽었습니다 : How do you USE Fortran 90 module data 그러나 문제를 해결할 수 없습니다.Fortran에서 모듈 선언을 사용할 때 연결 오류가 발생했습니다
다른 모듈에서 선언 한 변수를 사용하려고하면 LNK2019 : 확인할 수없는 외부 기호가 나타납니다.
배경 정보 : 저는 Fortran의 초보자이며 다른 누군가가 만든 프로젝트에서 일하고 있습니다. 인텔 포트란 작곡가와 비주얼 스튜디오를 사용하고 있습니다. 내가 공개 및 개인 모듈 데이터의 사용을 제대로 이해하는지 확실하지 않습니다.
문제는 다른 모듈에서 변수 BodySystem을 사용하려고 할 때마다 작동하지 않으며 해결되지 않은 외부 기호가 있다는 오류가 발생합니다.
공개 및 비공개 부분을 잘못 사용하고 있습니까? 아니면 다른 것을 놓치고 있습니까? 그래도 문제가 아니었다 때문에, 코드 삭제 :
편집 : 나는 컴파일 가능한 코드 조각
Edit2가에 코드를 변경했습니다. IanH는 객체 파일이 유효 기간이 경과함에 따라 올바른 답을주었습니다.
내가 얻을 정확한 오류 메시지는 다음과 같습니다
오류 2 치명적인 오류 LNK1120 : 1 개 확인되지 않은 외부 디버그 \ HmSlam.exe
오류 1 오류 LNK2019 : 함수에서 참조되지 않은 외부 기호 _COORDINATESSYSTEM_M_mp_BODYSYSTEM _MAIN__ HmSlam.obj
여기서 HmSlam은 주 프로그램이며 coordinatessystem_m은 변수 bodysystem이 선언 된 모듈입니다.
문제를 설명하기에 충분하지만 크기는 커질 수있는 편집 가능한 스 니펫을 게시 할 수 있습니까? 정확한 오류 메시지를 게시 할 수 있습니까? 가상 코드를 고치려고 할 때의 문제는 수정 코드가 응답을 생성하는 경향이 있다는 것입니다. * 예, 실제 코드에 문제가있는 경우에만 의사 코드로 게시했습니다. * –
여전히 '잘못된 코드'를 게시하고있는 것으로 의심됩니다. 필자는 모듈에있는 'public'지정자를 모듈에 넣는 것이 정확하다고 생각하지 않습니다. 'private' 지정자 다음에 줄을 써보십시오. 또한,'contains' 문은 선행하는 것이 아니라'end type'을 따라야한다고 생각합니다. –
나는 그것을 다시 편집했는데, 나는 그것이 무엇이며 무엇이 중요하지 않은지를 결정하는 것이 약간 어렵다는 것을 알았다. 이제 서브 루틴 초기화 예제를 서브 루틴의 예제로 포함 시켰습니다. (이것은 내가 신체 시스템을 호출 할 수 있다면 가장 먼저해야 할 일입니다.) – BarendB