안녕하세요 코딩 처음시작한 사람인데 처음부터 오류가 뜨네요

kosang02의 이미지

1>------ 빌드 시작: 프로젝트: hello, 구성: Debug Win32 ------
1>hello.c
1>MSVCRTD.lib(exe_winmain.obj) : error LNK2019: _WinMain@16 외부 기호(참조 위치: "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 함수)에서 확인하지 못했습니다.
1>C:\Users\고상혁\source\repos\hello\Debug\hello.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.
1>"hello.vcxproj" 프로젝트를 빌드했습니다. - 실패
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

이렇게 오류가 뜨는데 해결방법이 없나요??

#include

int main()
{
printf("hello, world!\n");
return 0;
}

익명 사용자의 이미지

코딩의 세계에 당도한 것을 환영하오 낯선이여..

Q. 컴파일러의 저 말은 무슨 뜻인가?

A. 컴파일러는 종종 쉬워 보이는 문제에 난해한 진단 메시지를 주곤 합니다.
그리고 번역된 컴파일러 진단 메시지는 종종 원문보다도 이해하기 어렵습니다.

충분히 숙련되고 나면, "외부 기호", "참조 위치", "LNK1120" 등의 힌트를 통해 아래 사실에 도달할 수 있지요.

"WinMain 함수가 정의되어 있었어야 했는데, 그렇지 않아서 링크 에러가 났구나."

실제로, 귀하의 코드에는 WinMain이 없죠.

Q. 근데 WinMain은 대체 무엇이며 왜 필요한가?

A. https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain

WinMain은 graphical Windows-based application을 위한 user-provided entry point의 이름입니다.

각설하고, 결론으로 직행하면, 귀하께서 Visual Studio로 hello 프로젝트를 만들 때, 분명 어디에선가 선택할 수 있는 옵션이 있었을 겁니다.

"Win32 Console Application" vs. "Win32 Application"

귀하께서 보고 계시던 프로그래밍 교본은 분명히 전자를 선택하라고 했을 텐데, 귀하께서는 아마도 부주의일지 고의일지 모를 이유로 후자를 선택하셨겠죠.

그 단 한 번의 잘못된 선택이 컴파일러의 알쏭달쏭한 진단 메시지를 비롯하여 귀하의 불운한 사태를 초래한 것입니다.

이런 경험을 몇 차례 하며 공연히 시간을 날리고 나면, 자연히 꼼꼼함과 신중함을 함양하게 되지요. 프로그래머의 중요한 덕목이랍니다.

p.s. 이 문제는 프로젝트 설정을 적절히 변경하면 간단히 해결할 수 있는 문제입니다. 어떤 설정을 변경하면 되는지 찾아보는 건 연습 문제로 남길게요. 귀찮으면 그냥 프로젝트를 새로 만들면 됩니다.

kosang02의 이미지

처음 잘못된 선택이 큰 결과를 불러오는군요 ㅠㅠ
여러번 시도한 끝에 다행히 해결은 했습니다.
좋은 충고와 응원 감사합니다.^^

익명 사용자의 이미지

대단하시네요. 첫 코딩을 c로 하시다니.
전공자이시면 c는 꼭 하셔야되고,
비전공자이시면 c 하시다가 어려워서 못해먹겠다는 생각드시면 파이썬으로 시작하는 것도 나쁘지 않아요.
저는 틀딱 꼰대 아저씨라,
라때는 말이쥐... BASIC 으로 시작했는데 세상 좋아졌죠 ㅋㅋㅋ

세벌의 이미지

앞으로도 kldp 자주 오실 거 같은데 여기에서 소스코드 올릴 때는 code 태그를 쓰는 게 좋습니다.
그래야 들여쓰기도 잘 나타나고 고수들의 좋은 답변을 받을 확률이 높아집니다.

#include <stdio.h>
 
int main()
{
    printf("hello, world!\n");
    return 0;
}
라스코니의 이미지

윈도우에서 하실거면 NetBeans나 Eclipse
리눅스에서는 Eclipse나 kdevelop를 쓰시길 추천드립니다.

VMware 가상머신에 우분투를 설치하고 하시면 편하실 겁니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.