/FORCE 옵션을 사용하면 링커에서는 기호가 참조되어 있지만 정의되어 있지 않은 경우나 여러 번 정의되어 있는 경우에도 올바른 .exe 파일 또는 DLL을 만듭니다.

/FORCE 옵션에는 다음과 같이 선택적 인수를 사용할 수 있습니다.

  • /FORCE:MULTIPLE을 사용하면 LINK에서 기호에 대한 정의를 하나 이상 찾더라도 출력 파일을 만들 수 있습니다.

  • /FORCE:UNRESOLVED를 사용하면 LINK에서 정의되지 않은 기호를 찾더라도 출력 파일을 만들 수 있습니다. 진입점 기호가 확인되지 않으면 /FORCE:UNRESOLVED는 무시됩니다.

/FORCE에 인수를 사용하지 않으면 MULTIPLE과 UNRESOLVED를 모두 의미합니다.

이 옵션을 사용하여 만든 파일이 예상대로 실행되지 않을 수도 있습니다. 링커에서는 /FORCE 옵션이 지정된 경우 증분 링크를 수행하지 않기 때문입니다.

/clr를 사용하여 모듈을 컴파일하는 경우 /FORCE를 지정해도 이미지가 생성되지 않습니다.

Posted by cyj4369
,

주석을 제거하면 트레이아이콘이 나오고 주석을 넣으면 아무 창도 안뜨고 백그라운드에서 실행



//NOTIFYICONDATA  nid;

// nid.cbSize = sizeof(nid);

// nid.hWnd = m_hWnd; // 메인윈도우핸들

// nid.uID = IDR_MAINFRAME;  // 아이콘리소스ID

// nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; // 플래그설정

// nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); // 아이콘로드

// CString Title = _T("초보자를위한작곡프로그램");   // 트레이위에커서가올라갔을때표시되는프로그램명

// lstrcpy(nid.szTip, Title); 

// Shell_NotifyIcon(NIM_ADD, &nid);


ModifyStyleEx (WS_EX_APPWINDOW, WS_EX_TOOLWINDOW);


MoveWindow(-100,-100,0,0,1);



======아래는 퍼온글======


음....

프로그램 시작과 동시에 다이얼로그를 안보이게 할때면,(ShowWindow(SW_HIDE);를 쓰던지 우주 넘어로 날려버리던지(MoveWindow(0,0,0,0,1);)  그 와 동시에 작업표시줄에서도 그 다이얼로그의 흔적을 없애햐 한다..

 

너무너무 쉬운작업

그냥 초기화 함수에서

ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);

호출하면 끗!

(혹시 안되면)

DWORD dwStyle = GetWindowLong(m_hWnd, GWL_EXSTYLE);

dwStyle &= ~WS_EX_APPWINDOW;
dwStyle |= WS_EX_TOOLWINDOW; 

SetWindowLong(m_hWnd, GWL_EXSTYLE, dwStyle);
(이거 사용ㅋ)

 

설명하자면,

함수의 원형은

BOOL ModifyStyleEx(
   DWORD dwRemove,   //제거할 항목
   DWORD dwAdd,      //추가할 항목
   UINT nFlags = 0 
);

이렇게 된다..

속에 들어갈 윈도우 속성 인자들은

아래와 같고..ㅋ

  • WS_EX_ACCEPTFILES   Specifies that a window created with this style accepts drag-and-drop files.
  • WS_EX_APPWINDOW   Forces a top-level window onto the taskbar when the window is visible.
  • WS_EX_CLIENTEDGE   Specifies that a window has a 3D look — that is, a border with a sunken edge.
  • WS_EX_CONTEXTHELP   Includes a question mark in the title bar of the window. When the user clicks the question mark, the cursor changes to a question mark with a pointer. If the user then clicks a child window, the child receives a WM_HELP message.
  • WS_EX_CONTROLPARENT   Allows the user to navigate among the child windows of the window by using the TAB key.
  • WS_EX_DLGMODALFRAME   Designates a window with a double border that may (optionally) be created with a title bar when you specify the WS_CAPTION style flag in the dwStyle parameter.
  • WS_EX_LEFT   Gives window generic left-aligned properties. This is the default.
  • WS_EX_LEFTSCROLLBAR   Places a vertical scroll bar to the left of the client area.
  • WS_EX_LTRREADING   Displays the window text using left-to-right reading order properties. This is the default.
  • WS_EX_MDICHILD   Creates an MDI child window.
  • WS_EX_NOPARENTNOTIFY   Specifies that a child window created with this style will not send theWM_PARENTNOTIFY message to its parent window when the child window is created or destroyed.
  • WS_EX_OVERLAPPEDWINDOW   Combines the WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE styles
  • WS_EX_PALETTEWINDOW   Combines the WS_EX_WINDOWEDGE and WS_EX_TOPMOST styles.
  • WS_EX_RIGHT   Gives a window generic right-aligned properties. This depends on the window class.
  • WS_EX_RIGHTSCROLLBAR   Places a vertical scroll bar (if present) to the right of the client area. This is the default.
  • WS_EX_RTLREADING   Displays the window text using right-to-left reading order properties.
  • WS_EX_STATICEDGE   Creates a window with a three-dimensional border style intended to be used for items that do not accept user input.
  • WS_EX_TOOLWINDOW   Creates a tool window, which is a window intended to be used as a floating toolbar. A tool window has a title bar that is shorter than a normal title bar, and the window title is drawn using a smaller font. A tool window does not appear in the task bar or in the window that appears when the user presses ALT+TAB.
  • WS_EX_TOPMOST   Specifies that a window created with this style should be placed above all nontopmost windows and stay above them even when the window is deactivated. An application can use the SetWindowPosmember function to add or remove this attribute.
  • WS_EX_TRANSPARENT   Specifies that a window created with this style is to be transparent. That is, any windows that are beneath the window are not obscured by the window. A window created with this style receivesWM_PAINT messages only after all sibling windows beneath it have been updated.
  • WS_EX_WINDOWEDGE   Specifies that a window has a border with a raised edge.


그러나...

중요한건 이게 아니었다능..

나는 작업표시줄을 없애야 할땐, ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW); 이렇게 쓰는걸 외우고만 써서..

다시 생성할라니깐, 생각이 안나더라능...ㅡ.ㅡㅋ

 

난 왜이리 멍청한가 하는 자괴감과, 한심함이 멈먹이 된 바보인증 후에(어떻게 해야 하나..고민한지 5분후에..)

ModifyStyleEx( WS_EX_TOOLWINDOW,0 ); 

그냥 이렇게 쓰면, 다시 생겨난다...

당연한거....ㅡ.ㅡㅋ 속성을 제거 했으니, 다시 살리면 되잖아..ㅡ.ㅡㅋ

 

교훈..도대체 뭐하는 함수인지는 알고서나 함수를 쓰자..제길

Posted by cyj4369
,

bitset를 사용하면 된다.


bitset<8> a1;

char *event1 = &((VstMidiEvent *)(events->events[0]))->midiData[0];

a1 = *event1;

OutputDebugString(a1.to_string().c_str());

OutputDebugString(" ");

'Development > C/C++' 카테고리의 다른 글

[memcmp]  (0) 2012.10.12
[정적변수 static]  (0) 2012.10.12
[LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의 의미‎]  (0) 2012.08.19
[C언어 문법: Bit field (콜론 연산자)]  (0) 2012.06.16
[Call by Value와 Call by Reference]  (1) 2012.05.05
Posted by cyj4369
,

선언 하는 헤더 파일들 순서가 바뀌어 있어서 발생 할 수 있다.

다음과 같이 처리해 준다.


//오류 발생

#include <winioctl.h>

#include "stdafx.h"

 

//정상 동작

#include "stdafx.h"

#include <winioctl.h>

'Development > visual studio' 카테고리의 다른 글

[LINK에러시 가능한 해결법 한 가지]  (0) 2012.08.20
[MFC 트레이아이콘으로 만들기]  (0) 2012.08.19
[MFC 트레이아이콘으로 만들기]  (0) 2012.08.18
[error LNK2005]  (1) 2012.08.18
[fatal error LNK1169]  (0) 2012.08.18
Posted by cyj4369
,

LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 
뭔가 다 비슷 비슷해보이죠? 

원래 c와 c++은 string이라는 똑똑한 자료구조형을 compiler차원에서 지원하고 있지 않습니다. 

그대신 가장 많이 사용하는 string을 어떻게 저장해야 할지에 대해 고심한 결과... 
결국 배열의 끝에 '\0'또는 0 또는 NULL값을 넣어 string을 표현하도록 했습니다. 
결국 가장 적은 용량의 string처리와 가장 골치아픈 string처리가 탄생하는 순간이였죠. 

어쨌거나 요점은... 
Windows에서는 이런 string처리를 위해서 char* 형을 그대로 쓰기 보다는 LPCSTR등의 표현으로 대치해 사용함으로써, 개발의 편의성을 돕고 있습니다. 

자... 그럼 서론이 길었고... 
위의 골치아픈 형을 살펴보면.. 

같은 글자들이 여러번 반복해 나옴니다. 

LP, C, STR 등이 거의 자주 반복되고, 
어떤놈들은 T 나 W를 사용하기도 하죠. 

글자를 하나씩 살펴볼까요. 

LP는 long pointer를 나타내는 약어로서 16bit시절의 윈도우의 유산입니다. 
과거 windows3.1까지의 시절에는 포인터는 모두 16bit였고, 24bit 메모리를 long pointer라는 것을 통해서 extended memory라는 이름으로 관리했었거든요.. 
현재 LP(long pointer)는 .Net에서는 64bit pointer를, VC++6.0과 그 이전 버전에서는 32bit pointer를 나타냅니다. 

C는 constant, 즉 함수의 내부에서 인자값을 변경하지 말라는 뜻입니다. 

STR은 말그대로 string자료가 될것이라는 뜻으로 내부적으로는 char형 배열에 null값 종료를 의미하고 있죠. 

자... 그럼 해석해 봅시다.. 
LPSTR = long pointer string = char * 
LPCSTR = long pointer constant string = const char * 
결과적으로는 맨 마지막과 같은 형이라는 거죠. 

그런데... 
LPCTSTR!! 요넘은 무었이냐!! 
LPCTSTR = long pointer constant t_string = const tchar * 
앗! 오타입니다. t라는 놈이 들어갔네요.. 
오타일까요? ^^ 아닙니다. t라는 놈은 우리나라를 위해 아주 중요한 역할을 하는 놈이죠.. 이것은 잠시 이후에 살펴보겠습니다. 

그럼 먼저.. 
W라는 넘을 살펴보죠... 

W 이넘은 wide char를 나타냅니다. 쉽게 말하면 unicode죠.. 
win9x에서 사용하던 multibyte와는 다릅니다. 물론 한글 조합형 코드도 아니고... 
unicode를 나타냅니다. 

자 그럼 다시 해석을 해보죠. 
LPWSTR = long pointer wide string = w_char * 
LPCWSTR = long pointer constant wide string = const w_char * 

위와 같이 해석됩니다. 


그런데 t_char('티캐릭터'라고 읽습니다.)는 무었이냐!! 

마이크로소프트가 세계 각국에 제품을 판매하면서.. 
각국의 언어에 맞추어 개발하는 것에 환멸을 느끼다가.. 
드디어 windows를 unicode기반으로 개발하는 작업에 착수했습니다. 

그런데... 문제는 char는 1Byte이고 wide char는 2Byte이므로.. 
포인터 연산을 많이하는 c, c++코드는 호환성에 치명적인 문제가 있었죠. 
그래서 컴파일러가 precompile option을 보고. 환경에 맞게 동작하는 코드를 작성할 수 있는 새로운 변수 모양의 Macro를 선언하게 되었습니다. 
그것이 바로 TCHAR, t_char라는 변수죠. 
이놈들은 자신의 운영체제가 multi-byte환경이면, char형으로, 
unicode환경이면, w_char, wide char형으로 type casting됩니다. 

그래서... 보통 windows 9x, 2000계열의 환경이라면, 
LPTSTR = LPSTR = char * 
LPCTSTR = LPCSTR = const char *가 됩니다. 

그런데.. 
아마 저 코드에서.. 
(LPSTR)(LPCTSTR) 형변환을 할때 자세히 보면.. 
const 라는 키워드만 떼내는거지요... 
그러니까 사실은 (char *)(const char *)와 같은 말입니다. 
웃기는 형변환이죠.. 
그럼 없어도 될까요? 
^^ 

없으면 당연히 오류가 나게됩니다. 
왜냐면...(LPSTR)CString을 하면.... CString형 자료의 맨 처음 주소부터 char * 형으로 형변환하기 때문이죠. 
CString형은 앞의 16Byte를 자료형을 표현하기 위해서 사용하기 때문에, 여기서부터 형 변환을 해주면 엉뚱한 값이 표현되게 됩니다. 

따라서 MFC에서 지원하는 CString class는 LPCTSTR라는 함수를 통해서 일단 안전하게 const char * 형으로 바뀐 자료형을 얻어오게 하는거죠. 

CString myString; 
(LPCTSTR)myString;이라고 해주면.. 
myString내부의 string 값을 꺼내오게 도와주는 연산자 또는 함수를 사용하게 된겁니다. 
즉 (LPCTSTR)이란 놈이 반환값이 const char* 인 함수입니다. 
정확하게 표현하면 operator overloading이라는 거지요. 

결과적으로 (LPSTR)(LPCTSTR)myString은 
myString의 내부 string 자료를 함수를 통해 자료를 꺼내온뒤에, char* type으로 안전하게 바꾸어주는 역할을 하게 되는 거지요. 

참고로, 함수의 인자가 char * 인곳에 const char* 형을 넣으면 컴파일 오류가 발생하기 때문에 (LPSTR)을 한번더 앞에 써주어서 강제 type casting을 한 것입니다. 

'Development > C/C++' 카테고리의 다른 글

[정적변수 static]  (0) 2012.10.12
[char형의 비트셋을 출력하고 싶을 때]  (0) 2012.08.19
[C언어 문법: Bit field (콜론 연산자)]  (0) 2012.06.16
[Call by Value와 Call by Reference]  (1) 2012.05.05
[Event]  (0) 2011.12.01
Posted by cyj4369
,



'Development > visual studio' 카테고리의 다른 글

[MFC 트레이아이콘으로 만들기]  (0) 2012.08.19
[error C2146: 구문 오류]  (0) 2012.08.19
[error LNK2005]  (1) 2012.08.18
[fatal error LNK1169]  (0) 2012.08.18
[MS-SQL Server 2008 R2 (2010. 12월 기준 최신버전) 설치]  (0) 2011.11.03
Posted by cyj4369
,

증상 1.

 

이런 에러가 나온건.. CRT때문이라고 그러는데.. ATL이나 MFC를 사용하게되면
msvcrtd에서 이미 선언되었기때문에 그런거란다...

 

해결방법은 간단하다...
Project Setting에가서 Link탭에 Input으로 가면 ignore에가서 
LIBCMT.lib만 넣어주면된다...

----------------------------------------------------------------------------
LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrtd.lib(MSVCRTD.dll)
LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in msvcrtd.lib(MSVCRTD.dll)
LIBCMT.lib(atox.obj) : error LNK2005: _atoi already defined in msvcrtd.lib(MSVCRTD.dll)
LIBCMT.lib(getenv.obj) : error LNK2005: _getenv already defined in msvcrtd.lib(MSVCRTD.dll)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
LIBCMT.lib(strcat.obj) : error LNK2005: _strcpy already defined in msvcrtd.lib(MSVCRTD.dll)
msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __strdup already defined in LIBCMT.lib(strdup.obj)
msvcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in LIBCMT.lib(mbctype.obj)
LIBCMT.lib(crt0dat.obj) : warning LNK4006: _exit already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBCMT.lib(crt0dat.obj) : warning LNK4006: __exit already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBCMT.lib(winxfltr.obj) : warning LNK4006: __XcptFilter already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBCMT.lib(atox.obj) : warning LNK4006: _atoi already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBCMT.lib(getenv.obj) : warning LNK4006: _getenv already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xc_z already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xc_a already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xi_z already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(crt0init.obj) : warning LNK4006: ___xi_a already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBCMT.lib(strcat.obj) : warning LNK4006: _strcpy already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
msvcrtd.lib(MSVCRTD.dll) : warning LNK4006: __strdup already defined in LIBCMT.lib(strdup.obj); second definition ignored
msvcrtd.lib(MSVCRTD.dll) : warning LNK4006: __setmbcp already defined in LIBCMT.lib(mbctype.obj); second definition ignored
Creating library Debug/RealImageConvert.lib and object Debug/RealImageConvert.exp
LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/RealImageConvert.exe : fatal error LNK1120: 1 unresolved externals

출처 : http://kudak.egloos.com/

 

----------------------------------------------------------------------------

LIBC.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
LIBC.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
LIBC.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
LIBC.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
LIBC.lib(atox.obj) : error LNK2005: _atoi already defined in msvcrtd.lib(MSVCRTD.dll)
LIBC.lib(strtol.obj) : error LNK2005: _strtoul already defined in msvcrtd.lib(MSVCRTD.dll)
LIBC.lib(strcat.obj) : error LNK2005: _strcpy already defined in msvcrtd.lib(MSVCRTD.dll)
LIBC.lib(crt0init.obj) : warning LNK4006: ___xc_z already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBC.lib(crt0init.obj) : warning LNK4006: ___xc_a already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBC.lib(crt0init.obj) : warning LNK4006: ___xi_z already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBC.lib(crt0init.obj) : warning LNK4006: ___xi_a already defined in msvcrtd.lib(cinitexe.obj); second definition ignored
LIBC.lib(atox.obj) : warning LNK4006: _atoi already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBC.lib(strtol.obj) : warning LNK4006: _strtoul already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
LIBC.lib(strcat.obj) : warning LNK4006: _strcpy already defined in msvcrtd.lib(MSVCRTD.dll); second definition ignored
   Creating library Debug/SCID.lib and object Debug/SCID.exp
LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBC.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
D:\Projects\sf\ServiceServerDialog\Debug\Services\SCID\1.0\SCID.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

----------------------------------------------------------------------------

내경우에는 앞에 충돌나는 라이브러리가 달라서 LIBC.lib를 제외시켜 주었다

 

증상 2.

 

내가 작성한 함수인데도 에러가 났을경우에

 

1. 헤더 파일에 선언과 정의를 동시에 할때 발생 할 수 있다. obj 링크 중복!!

해결법1.

( 프로젝트 속성 - 링커 - 명령줄 - /FORCE:MULTIPLE 입력 ) 무시하기-_-..

less..

/FORCE:[MULTIPLE|UNRESOLVED]

/FORCE 옵션을 사용하면 링커에서는 기호가 참조되어 있지만 정의되어 있지 않은 경우나 여러 번 정의되어 있는 경우에도 올바른 .exe 파일 또는 DLL을 만듭니다.

/FORCE 옵션에는 다음과 같이 선택적 인수를 사용할 수 있습니다.

  • /FORCE:MULTIPLE을 사용하면 LINK에서 기호에 대한 정의를 하나 이상 찾더라도 출력 파일을 만들 수 있습니다.
  • /FORCE:UNRESOLVED를 사용하면 LINK에서 정의되지 않은 기호를 찾더라도 출력 파일을 만들 수 있습니다. 진입점 기호가 확인되지 않으면 /FORCE:UNRESOLVED는 무시됩니다.

/FORCE에 인수를 사용하지 않으면 MULTIPLE과 UNRESOLVED를 모두 의미합니다.

이 옵션을 사용하여 만든 파일이 예상대로 실행되지 않을 수도 있습니다. 링커에서는 /FORCE 옵션이 지정된 경우 증분 링크를 수행하지 않기 때문입니다.

/clr를 사용하여 모듈을 컴파일하는 경우 /FORCE를 지정해도 이미지가 생성되지 않습니다.

Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다.
  2. 링커 폴더를 클릭합니다.
  3. 명령줄 속성 페이지를 클릭합니다.
  4. 추가 옵션 상자에 옵션을 입력합니다.

http://msdn2.microsoft.com/ko-kr/library/72zdcz6f(VS.80).aspx

 

해결법2.

헤더파일에 선언을 소스파일에 정의를 나누면 댄다.

 

해결법3.

헤더파일에 있는 함수를 inline 예약어를 붙여준다.



또 다른 원인


1.링크하는 모든 라이브러리들을 디버그 모드 또는 릴리즈 모드로 통일시키지 않았거나 
2.런타임 라이브러리가 일치하지 않아서 생기는 경우가 대부분입니다. 

예를 들어, 작업중인 프로젝트는 릴리즈인데 디버그 모드로 컴파일된 라이브러리를 링크하는 경우, 
작업중인 프로젝트는 싱글 쓰레드인데 멀티 쓰레드로 컴파일된 라이브러리를 링크하는 경우, 
두가지 경우가 뒤섞인 경우가 있을 수 있겠습니다. 

간혹 위에서처럼 특정 라이브러리 무시 옵션을 주고 링크할 수는 있으나 
임시 방편일 뿐입니다. 
무시 옵션없이도 깨끗이 링크되어야 합니다. 
그렇지 않으면 나중에 문제가 발생할 수 있습니다. 
링크하는 라이브러리와 현재 작업중인 프로젝트 간의 설정(빌드 모드, 런타임라이브러리)이 일치하는 지 꼼꼼히 살펴보시기 바랍니다.


http://www.gpgstudy.com/forum/viewtopic.php?p=24947


또 다른 원인


MFC 공유 라이브러리 사용, MFC 정적 라이브러리 사용



또 다른 원인

Visual C++에서 CRT 라이브러리와 MFC 라이브러리가 잘못된 순서로 링크되면 LNK2005 오류가 발생

Posted by cyj4369
,

프로젝트 속성 -> 링커 ->명령줄 -> 하단에 추가옵션


/FORCE:multiple


Posted by cyj4369
,

리눅스 커널 소스를 살펴보다가 스트럭쳐 안에 이상한 형식의 변수 선언을 보았다.

struct task_struct {
     ...
     unsigned did_exec:1;
     ...
};

이런 형태였는데, 변수를 선언한 다음 콜론(:)과 숫자가 오는 형태는 여지껏 본 적이 없었다.
구글링을 하여 찾아보니 bit field라는 이름의 C언어의 문법 중 하나라는 것을 알게 되었다.
미리 이야기하자면 위의 구문은 did_exec라는 1bit짜리 변수를 선언한 것이다.


struct f
{
    unsigned int  flag : 1;   -- bit flag: on(1) 또는 off(0)의 값을 가질 수 있다. --
    signed int    num : 4;   -- signed 4-bit field; -7...7 또는 -8...7의 값을 갖는다. --
    : 3;                            -- 스트럭쳐를 8bit로 맞추기 위한 3bit의 padding bit --
} g;

'Development > C/C++' 카테고리의 다른 글

[char형의 비트셋을 출력하고 싶을 때]  (0) 2012.08.19
[LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의 의미‎]  (0) 2012.08.19
[Call by Value와 Call by Reference]  (1) 2012.05.05
[Event]  (0) 2011.12.01
[Semaphore]  (0) 2011.12.01
Posted by cyj4369
,

import java.util.*;
class  inputtest{
    public static void main(String[] args)
    {

Scanner sc=new Scanner(System.in);
     int d;
        System.out.printf("숫자 입력하시오..!  ");
        d = sc.nextInt();
        System.out.printf("입력한 숫자는 %d \n",d);

 }
}

'Development > Java' 카테고리의 다른 글

[아스키코드표]  (0) 2012.04.28
[String형 문장을 이을때는...]  (0) 2012.04.28
[아스키코드 출력]  (0) 2012.04.27
[String에서 한 글자씩 읽기/추출하는 방법]  (0) 2012.04.27
[StringBuffer]  (0) 2012.04.19
Posted by cyj4369
,