ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual Studio 오류코드 C1853 해결 방법
    [Developer]/C,CPP 2017.12.15 21:02

    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

Designed by Tistory.