MSVCRTD.lib Error

MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in XXXXXXXX.

라이브러리를 작성하다가 이러한 링크 에러가 발생하였다. 이문제에 대해서는 마이크로소프트에서 해결책을 제시하고 있다.
http://support.microsoft.com/default.aspx?scid=kb%3Bko%3B148652#top

내 경우에는 이 방법이 잘 이해가 가지 않았고 해결되지가 않았다. 내 경우에는 MFC를 쉽게 사용하기 위해 라이브러리를 작성하는 중에 발생하였다. 삽질을 하며 알아낸 결과 라이브러리와 프로그램의 컴파일 옵션이 틀리면 이러한 링크 에러가 발생하는 것이었다.

아마 이러한 링크에러가 발생하는 경우는 이미작성된 라이브러리(예를들어 zlib같은)를 사용할 떄일 것이다. 그럴떄에는 라이브러리가 Static이면 작성하는 프로그램도 Static으로 Shared라면 Shared로 컴파일 옵션을 맞추어 주자.

Posted by 혁쌈

2008/02/27 14:11 2008/02/27 14:11
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/361

타이틀바 없이 다이얼로그 움직이기

WM_LBUTTONDOWN에다가,

SendMessage(WM_NCLBUTTONDOWN, HTCAPTION, 0);

NC영역의 타이틀을 누른걸로 처리해주는 것.

Posted by 혁쌈

2007/08/23 15:29 2007/08/23 15:29
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/300

VC++ 6.0 단축키

Ctrl + Tab : Edit하고 있는 Child Window 간의 이동
Ctrl + F4 : 현재 Edit하고 있는 Child Window를 닫기
Ctrl + I >> 문자열 입력 : 점진적으로 문자열 찾기 (Incremental Search)
Ctrl + F3 : 현재 커서에 있는 문자열 찾기 (블록 지정 안 해도 됨)
F3 : 찾은 문자열에 대한 다음 문자열로 이동 (Next Search)
Ctrl + H : 문자열 찾아 바꾸기 (Replace)
Ctrl + Left/Right Arrow : 단어 단위로 이동
Ctrl + Delete 또는 Backspace : 단어 단위로 삭제
Ctrl + F2 : 현재 라인에 북마크 지정/해제
F2 : 지정된 다음 북마크로 이동
Ctrl + Shift + F2 : 지정된 모든 북마크를 해제
F9 : 현재 라인에 Breakpoint를 지정/해제
Ctrl + Shift + F9 : 현재 Edit하고 있는 소스파일에 지정된 모든 Breakpoint 해제
Ctrl + ] 또는 E : {괄호의 짝을 찾아줌 ({에 커서를 놓고 눌러야 함}
Ctrl + J, K : #ifdef 와 #endif의 짝을 찾아줌
Ctrl + L : 한 라인을 클립보드로 잘라내기 (Cut)
Ctrl + Shift + L : 한 라인을 삭제
Alt + Mouse로 블록 설정 : 세로로 블록 설정하기 (마우스로)
Ctrl + Shift + F8 : 세로로 블록 설정하기 (키보드로), 취소할 때는 Esc키를 눌러야 함
블록 설정 >> Tab : 선택된 블록의 문자열을 일괄적으로 들여쓰기(Tab) 적용
블록 설정 >> Shift + Tab : 선택된 블록의 문자열을 일괄적으로 내어쓰기 적용
Alt + F8 >> Tab / Shift + Tab : 들여쓰기 자동 조정 (Tab:들여쓰기, Shift + Tab : 내어쓰기)
Ctrl + T : 현재 커서에 있는 변수/함수에 대한 Type이 Tooltip 힌트 창에 나타남
Ctrl + Alt + T :멤버 변수/함수 목록에 대한 팝업 창이 나타남
Ctrl + Shift + T : 공백/콤마/파이프/괄호 등을 기준으로 좌우 문자열을 Swap시킴
Ctrl + Shift + 8 : 문단기호 표시/감추기 : Tab은 ^, Space는 .으로 표시
Ctrl + D : 툴바의 찾기 Editbox로 이동
Ctrl + Up/Down Arrow : 커서는 고정시키고 화면만 스크롤 시키기 Ctrl + Shift + Spacebar : 함수의괄호 안에서 사용하면 위치한곳에 자료형과 인자를 무엇을 넣야돼는지 가르쳐줍니다.
Alt + 숫자(0) : WorkSpace창으로이동
F12 : 마우스 오른쪽 버튼 눌렀을때 go to definition 단축기
ctrl+ *(맨오른쪽 부분) : 위에서 F12 눌렀을때 이전화면으로 돌아가기
MFC 리소스 창에서  컨트롤 변수 추가 단축키 :  ctrl + 마우스 왼쪽버트 더블클릭

Posted by 혁쌈

2007/07/04 22:09 2007/07/04 22:09
,
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/290

Memory Mapped File(MMF)

[질문]

안녕하세요
mmf (Memory mapped file) 에대해서 알고싶습니다 어디강좌같은것이 있으면 부탁드립니다
mmf를이용해서 파일을 열고 파일을 읽어서 가공하고 닫고 하는작업을 해야됩니다
저는 텍스트가 포함된 바이너리파일을 열고 텍스트단위로 읽어서 줄바꿈기준으로 줄단위로 내용을
추출해야됩니다 방법좀 부탁드립니다

보니까 MapViewOfFile이란함수가있던데여, 이함수의 리턴값이 뭔가여사용법 좀 알았으면 합니다
즐거운하루되세요

[답변-즐거운악몽님이 답변하신 내용입니다.]

MMF(Memory Mapped File)이란 파일과 메모리 객체를 연결한다는 말 입니다...ㅡㅡ;
정말입니다...영문 그대로 생각하시면 됩니다...^^

좀 더 풀어서 이야기 하면 파일과 메모리 객체를 연결 시킨 후 그 메모리 객체에 이름을 지어줍니다.
그 후 그 이름을 이용하여 메모리에 데이터를 읽고 쓰고 하는 작업을 하게되면
그 내용이 메모리와 연결되어 있는 파일에 똑같은 효과가 적용되는 구조입니다.

이와 더불어 또 하나의 이슈가 있다면 이는 MMF를 이용한 프로세스간의 데이터 공유입니다.
보통 공유 메모리라 부르죠. 앞의 설명과 연결하여 이야기 하면 파일과 매핑된 메모리 객체에
이름을 부여합니다. 그후 다른 프로세서에서 그 이름을 갖고 해당 메모리 객체를 찾아서
접근(데이터읽기,쓰기)하면서 작업을 하게 되는겁니다. 지금까지는 실제적으로 파일을 메모리와
연결시켜 데이터를 공유 하는것으로 이야기 하였습니다만 반드시 파일을 매핑 시킬 필요는 없습니다.

파일 부분을 지정하지 않고, 운영체제가 알아서 만들라고 지정
(파일명 적는곳에 INVALID_HANDLE_VALUE 해주면 됩니다)하면 메모리 객체만 생성됩니다.
그리고 이 메모리 객체에 이름을 지어줍니다. 렇게 하고나면 메모리 상에 메모리영역이 확보되고
각각의 프로세서들이 이 영역을 이름으로 아서 접근(데이터읽기,쓰기)하면서 작업을 하게 되는겁니다.

순수한 공유 메모리를 통해 프로세서간의 공유의 예

프로세서 1)

// "test"라는 이름으로 크기 1024 이며 읽고쓰기가 가능한 상태로 메모리 객체를 만든다..
// 파일명 지정 안함.(파일과 연결 안함)
HANDLE hMapping = ::CreateFileMapping (INVALID_HANDLE_VALUE,       
                                                      NULL, PAGE_READWRITE, 0, 1024, "Test");

// 생성된 메모리 객체에 접근하여 시작 위치를 얻어온다.
LPVOID lpData = ::MapViewOfFile (hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
strcpy(lpData, "tipsware.com");  // 공유메모리 영역에 문자열 tipsware.com 를 입력한다.
::UnmapViewOfFile (lpData); // 접근했던 메모리객체를 연관성을 끊는다.


프로세서 2)

// 이미 생성된 "Test"라는 메모리 객체를 Open 한다.
HANDLE hMapping = ::OpenFileMapping (FILE_MAP_ALL_ACCESS, FALSE, "Test");

// Open된 메모리 객체에 접근하여 시작 위치를 얻어온다.
LPVOID lpData = ::MapViewOfFile (hMapping, FILE_MAP_ALL_ACCESS, 0, 0, 1024);
char str[1024];
strcpy (str, lpData); // 공유메모리에 있는 문자열 tipsware.com 을 str 배열에 복사한다.
::UnmapViewOfFile (lpData); // 접근했던 메모리객체를 연관성을 끊는다.
::CloseHandle (hMapping); // 공유메모리를 삭제한다.

Posted by 혁쌈

2007/06/26 22:47 2007/06/26 22:47
, ,
Response
No Trackback , a comment
RSS :
http://trlight.cafe24.com/tc/rss/response/286

Dialog based on ToolBar

http://www.codeproject.com/docking/toolbardialog.asp

Posted by 혁쌈

2006/08/01 16:36 2006/08/01 16:36
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/225

VS.net convert to VS6.0

http://www.devpia.com/Forum/BoardView.aspx?no=589808&ref=589804&forumname=VC_QA&stype=&KeyW=.sln&KeyR=titlecontent

Posted by 혁쌈

2006/07/27 16:10 2006/07/27 16:10
Response
No Trackback , No Comment
RSS :
http://trlight.cafe24.com/tc/rss/response/223


블로그 이미지

No pains, No gains.

- 혁쌈

Archives

Authors

  1. 혁쌈

Recent Trackbacks

  1. rjixambb rjixambb 10/30

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Site Stats

Total hits:
80137
Today:
6
Yesterday:
52