본문 바로가기
[Developer]/C,CPP

Visual Studio 오류코드 C1853 해결 방법

by 반가운 해피빈이 2017. 12. 15.

Visual Studio 2017 기준이며, C1853의 에러인 경우입니다.


내용을 보자면..



이러한 내용입니다.


프로젝트 구조는 간단합니다.



중요한건 확장자가 cpp라는 사실..


<ConsoleApplication1.cpp>

#include "stdafx.h"

#include "calc_util.h"


int main()

{

int num1 = 10;

int num2 = 20;


int result = add_nums(num1, num2);


printf("result: %d", result);


printf("END of sample");

    return 0;

}


그리고 유틸로 작성하는 소스 파일과


<calc_util.c>

#include "calc_util.h"

#include "stdafx.h"


int add_nums(int a, int b)

{

printf("input num a: %d, b: %d\n", a, b);


return a + b;

}



그 파일을 컴파일 할 수 있도록 포함시키는 헤더파일입니다.


<calc_util.h>

int add_nums(int a, int b);



이젠 준비 끝.



그러면 빌드(Ctrl + Shift + B)를 수행해볼까요.?


그 결과는 참혹합니다.


오류 C1853 'Debug\ConsoleApplication1.pch' 미리 컴파일된 헤더 파일이 이전 버전의 컴파일러에서 만들어졌거나, 미리 컴파일된 헤더가 C++인데 C에서 사용하고 있거나 또는 그 반대의 경우입니다. ConsoleApplication1 d:\workspaces\c_project\sampleproject1\consoleapplication1\clac_util.c 2


분명히 내용상은 문제가 없는데 빌드가 되지 않습니다.



그 결과를 몇시간 삽질한 결과, 원인을 발견했습니다.


바로 c 파일과 cpp 파일을 동시에 프로젝트에 삽입한 채로, 빌드를 수행했다는 사실이죠.


Visual Studio는 이것을 각각 빌드할 경우 메인이 되는 ConsoleApplication1.obj의 cpp 링커에서는 c로 컴파일한 calc_util.obj 파일을 연결할 수 없다는 내용을 말해주는 것입니다.



따라서, 해결책은 간단하죠. 바로 기준을 맞춰주는 것입니다.


크게 두가지가 있는데.. 


첫째, 기준이 cpp이므로, 기준 자체를 포함하여 프로젝트 모든 코드의 기준을 c로 맞춰준다.


[프로젝트] - [프로젝트 이름의 속성(P...)] - [구성 속성] - [C/C++] - [고급] 메뉴에서

컴파일 옵션을 C코드로 컴파일(/TC)로 맞춰주면 됩니다.



이 경우 간단하게 설정하여 끝난다는 장점이 있으나, 메인 프로젝트에서 cpp관련 문법이나, 함수를 사용하였을 경우 빌드 에러가 발생할 수 있다는 단점이 있죠.




그래서 두번째 방법이 있습니다.


둘째, c로 된 소스파일을 하나씩 컴파일 옵션을 C++로 지정하는 것입니다.



방법은 솔루션 탐색기에서 "해당 c 소스파일 선택" - [속성] - [구성 속성] - [C/C++] - [고급] 메뉴에서

컴파일 옵션을 C++코드로 컴파일(/TP)로 맞춰주면 됩니다.




이렇게 완료하니, 정상적으로 빌드되는 것을 확인할 수 있습니다.



1>------ 모두 다시 빌드 시작: 프로젝트: ConsoleApplication1, 구성: Debug Win32 ------

1>stdafx.cpp

1>ConsoleApplication1.cpp

1>clac_util.c

1>코드를 생성하고 있습니다...

1>ConsoleApplication1.vcxproj -> D:\Workspaces\C_Project\SampleProject1\Debug\ConsoleApplication1.exe

1>ConsoleApplication1.vcxproj -> D:\Workspaces\C_Project\SampleProject1\Debug\ConsoleApplication1.pdb (Partial PDB)

========== 모두 다시 빌드: 성공 1, 실패 0, 생략 0 ==========



아주 간단한 오류지만, 나름 몇시간 동안 삽질하였으므로;;;


기록 차원에서 남겨둡니다.

'[Developer] > C,CPP' 카테고리의 다른 글

Visual Studio 오류코드 C1853 해결 방법  (0) 2017.12.15

댓글0