Study/C&C++
-
warning LNK4042Study/C&C++ 2016. 8. 30. 10:43
프로젝트 빌드시, 링크 과정에서 warning LNK4042와 함께 error가 발생한다.warning LNK4042: 개체가 두 번 이상 지정되었습니다. 나머지는 무시됩니다. warning LNK4042: object specified more than once; extras ignored.이 경우, 아무리 찾아도 코드나 프로젝트 설정에서 오류를 찾을 수가 없다.검색해 보면, 빌드 히스토리를 지우거나, object file 이름을 바꾸거나, namespace를 바꾸는 등의 방법이 나오지만,근본적인 해결 방법은 아니었다. 가장 신빙성있는 원인은 아래 링크에서 발견하였다. http://stackoverflow.com/questions/3695174/visual-studio-2010s-strange-warn..
-
Timer Resolution 향상: 15.6ms -> 1msStudy/C&C++ 2016. 1. 7. 19:58
C++로 프로그램 작성후 실행 시, thread 내부에서 sleep을 해보면 1ms를 설정해도 보장이 되지 않는 경우가 많다.특히, serial 통신으로 데이터를 받아오는 thread를 실행하였을 때 15.6ms 마다 데이터를 받아 저장하는 것을 볼 수 있었다.고성능의 데스크톱에서는 1ms로 잘 동작하지만, 랩톱이나 미니PC에서만 15.6ms가 되는 것을 확인하였고,랩톱의 경우 외부 전원을 연결하면 15.6ms 이하로 낮아지는 것을 확인하였다. 그래서 원인으로, CPU, mainboard chipset, windows 버전, visual studio version, power 부족, thread library 등을 의심해 보았지만,어떤 방법으로도 해결되지 않았다. 그래서 15.6ms에 대한 단서로 검색해..
-
ChronoStudy/C&C++ 2015. 11. 20. 21:46
High Resolution Timer가 필요해Linux 프로그램에서 많이 사용하는 hrt (high resolution timer)가 윈도 프로그램에서 없어서,Linux 프로그램을 윈도 프로그램으로 포팅할때 애를 먹었다. Window엔 그런거 없어?Visual C++에서 지원하는 timer는 GetCpuTime, GetLocalTime 등으로 ms 단위의 시간을 얻어와서 계산하는 것이 대부분이고, 이마저도 정밀한 time이 아니라서 us단위가 필요할때 쓰기가 어렵다. 대안이 있긴 하지~getCpuTickCount를 가져와서 clock frequency로 나누거나QueryPerformanceCounter, QueryPerformanceFrequency를 사용해서 us timer를 만들 수도 있지만,둘다 ..
-
[펌] [VS2010] _AFXDLL 버그 리포트Study/C&C++ 2013. 1. 21. 23:50
오늘 visual studio 2010으로 작업하다가 아래와 같은 에러로 한참을 고생했다.IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds 구글링으로 찾은 여러 방법을 해보았지만 해결 되지 않았다.그러다 어느 댓글에서 찾은 해결책은 아래와 같다.MD와 MT의 switching이 잘 되지 않은 VS의 버그란다.이럴 수가.. 그래도 삽질 시간은 줄였으니 다행. ㅋ. I've encountered the same error in a number of different Win32 DLL projects, all of which had /MD switch applied.IntelliSense: #error directive: ..
-
[VS2010] 인텔리센스 에러: /MD _AFXDLLStudy/C&C++ 2012. 5. 4. 12:56
Visual Studio 2010에서 프로그래밍 중에 아래와 같은 에러가 발생했다.IntelliSense: #error 지시문: Please use the /MD switch for _AFXDLL buildsc:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h813처음보는 에러라 급 당황했지만, 신속히 구글신에게 해결 방안을 요청한 결과,MSDN에 아래와 같은 글과 함께 답변이 있어서 쉽게 해결했다. Question When I build my projects I get no error, but when I hit F7 to simply build the solution, I always get this Intell..
-
MFC 환경이 아닐때 CString 사용하기.Study/C&C++ 2011. 9. 3. 11:41
출처: http://brown.ezphp.net/12난 윈도우 프로그래밍을 시작했을 때 체계적인 학습이 아니라닥치는 대로 독학을 해서 MFC부터 배웠다.그래서 한동안 WinAPI로 작성된 코드는 굉장히 싫어했는데...ㅋㅋ뭐 세상에 MFC로 작성된 프로그램만 있는건 아니니까 ㅎㅎ사실 내가 만든 프로그램 중 절반은 문자열을 처리하는 작업이 대부분이다.패턴을 찾아내서 정보를 가져오고 그 정보를 바탕으로 처리를 하는것 그게 전부다.문자열 처리를 하기에 CString은 꽤 유용한 놈이다.그런데 non-MFC 프로그램에서는 CString을 사용할 수 없다는게 안타까웠다.그런데 왠걸.. MS가 CString을 MFC에 독립적으로 사용할 수 있도록 떼어내었단다.Visual Studio 2003부터 가능하다는데.. 왜 ..
-
Visual Studio 2005 : DestroyWindow는 어디에..Study/C&C++ 2009. 10. 21. 10:18
MFC로 이미지 하나 창에 띄우려고 하다보니 DestroyWindow에 메모리를 release해주는 코드를 넣어야 한다고 합니다. 그래서 DestroyWindow를 한참이나 찾아보았지만 없더군요 그래서 검색하던중.. 윈도우 프로그램 이 종료될 때 다음의 순서대로 메시지가 나타납니다. 1. WM_CLOSE ( OnClose ) 2. DestroyWindow ( DestroyWindow ) 3. WM_DESTROY ( OnDestroy ) 이런 걸 찾았습니다. 그랬군~ 하면서 그럼 꼭 DestryWindow에 다가 릴리즈코드를 넣을 필요는 없겠죠.. 얼른 해봐야겠군요.