WinMain과 관련된 컴파일 에러


비주얼 스튜디오 코드로 아래 코드를 컴파일하는데, 에러가 발생합니다.

//////////// LinkedList.h ////////////
#pragma once

typedef struct LINKEDLIST {
    Node* head;
    Node* cur;
    Node* before;
    int numOfData;
    int(*comp)(LData d1, LData d2);
}LinkedList;

typedef LinkedList List;
void ListInit(List* plist);


//////////// LinkedList.c ////////////
#include <stdio.h>
#include "LinkedList.h"

void ListInit(List* plist) {
    plist->head = (Node*)malloc(sizeof(Node));
    plist->head->next = NULL;
    plist->comp = NULL;
    plist->numOfData = 0;
}


//////////// main.c /////////////
#include <stdio.h>
#include "LinkedList.h"

int main() {
    List list;
    ListInit(&list);
    return 0;
}

이렇게 컴파일을 하면 undefined reference to 'ListInit'이라는 에러 메시지가 나타납니다.

이 중에서 LinkedList.c 파일을 별도로 컴파일하면 아래와 같은 에러가 뜹니다.

c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status

콘솔이 아니라 윈도우 어플리케이션으로 빌드해서 생긴 오류라고 하는데, 이걸 어떻게 해결해야 하나요? 컴파일 환경은 비주얼 스튜디오 코드 + GCC 6.3입니다.


조회수 53


1 답변


좋아요
0
싫어요
채택취소하기

원인은 윈도우 프로그램(GUI)의 경우 엔트리 포인트가 main이 아닌 WinMain 입니다.

링커가 WinMain을 못찾아서 발생하는 오류 입니다.

visual studio code 을 옵션을 찾아서 변경하면 될 듯 싶고 정 빌드가 급한것이면 cmd 창을 열어서 소스 저장 디렉토리로 이동후 아래의 커맨드를 이용해보세요.

gcc -o main *.c 

그런데 소스를 보니 구조체 Node 선언이 없고 LData 타입도 없군요.

  • 2018년 01월 08일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close