본문

OMNeT++에서 Error: CoreException, Error collecting #includes from 오류 해결하기


[그림 1, 2] 인코딩 문제로 인한 다양한 오류들


OMNeT++을 처음 설치하고 실행하려고 하면 오류가 발생한다. Error refreshing Makefiles - Error collecting #includes from ... 인데 아래에 보면 MS949, 즉 한글 인코딩이 언급되어있다. 또한 프로젝트 속성내의 resource에서 Text file encoding의 other를 눌러보면 MS949가 선택될 때, The selected encoding is not supported가 뜬다. euc-kr도 먹지 않는다. 따라서 주어진 인코딩 사항에서 선택하여 해결해야 한다. 특히 utf-8이건 us-ascii이건 상관은 없지만 이 둘중에서 선택해야 할것이다. (참고 :  Re: [Omnetpp-l] Re: UnsupportedEncodingException) 아마 이클립스에서 파일을 읽는 과정에서 인코딩 오류가 발생하는 것으로 추측한다. 인코딩만 잘 설정해주면 프로젝트에서 빨간색 느낌표가 사라지며 실행이 된다.


그럼 위의 방법만으로 문제가 해결되느냐? 아니다. 근본적인 문제가 남아있다. 워크스페이스에서의 인코딩 설정 자체가 잘못되어있기 때문에 해결해야 한다. Window -> Preferences -> General -> Workspace -> Text file encoding에서도 마찬가지로 설정을 변경해야 OMNeT++ 프로젝트를 생성하는데 Creation problems - Error: CoreException 오류가 나지 않는다. 그런데 중요한 사실은, 위에 언급된 두 인코딩을 사용하더라도 파일을 include 하는 과정이 있는 부분에서 오류가 난다는 것이다. 예를 들어 [그림 3] 과 같이 simple module을 생성할 때, omnetpp.h를 불러오지 못하여 Symbol/Type could net be resolved, Member declation not found 과 같은 오류가 발생한다. 살펴보니 영어 로케일이 설정된 컴퓨터에서는 잘 동작하길래 제어판에서 영어로 로케일을 바꿔보니 오류가 해결되었다. 


즉, "제어판\시계, 언어 및 국가별 옵션\국가 및 언어"에서 형식을 영어로 바꾸고(다른 탭에서 변경할 필요 없다), 이클립스의 Windows -> Preferences -> General -> Workspace -> Text file encoding을 default(Cp1252)로 변경하면 된다. (혹시 해서 언어를 변경하지 않은 채 encoding 을 Cp1252로 변경하려 했지만 통하지 않았다)



[그림 4, 5] 언어 형식 변경을 하면 Text file encoding이 Cp1252로 바뀌게 된다



그리고 참고로, 샘플 프로젝트 파일을 받아 import 하고 실행하려고 하면 바로 실행이 안되는데, 이것은 dependency 추가를 비롯한 makefile 생성 과정이 이루어지지 않았기 때문이다. 이를 위해 아래와 같이 opp_makemake -f --deep 명령을 수행한다.



[그림 3] opp_makemake -f --deep

댓글

Holic Spirit :: Tistory Edition

design by tokiidesu. powerd by kakao.