빌드시 LNK2019, LNK1120 외부기호를 참조할 수 없습니다. 오류. 도와주세요!!!

ljh9212의 이미지

안녕하세요 선배님들,

프로젝트를 빌드 하다가 도저히 오류를 못잡아 내겠어서 급히 도움을 요청드립니다.

관련빈드 에러는 LNK2019, LNK1120 외부기호를 참조할 수 없습니다. 관련으로, 이미 프로래밍을 하시는 많은 분들이 난감해하시는 내용으로 알고 있습니다.

가장 중요한 에러 코드는 첨부파일 중 '코딩질문 1번' 내용과 같습니다.

해당 에러 확인후 웹검색을 통해서 크게 3가지의 해결책을 모색해봤습니다.

1.
LNK2019가 발생하는 경우는 다음과 같은 경우들이 있다.

1. 헤더를 인클루드만 하고 프로젝트에 헤더 및 .cpp를 포함하지 않을 경우...
2. .h 및 .cpp에 함수원형 및 함수호출을 해놓고 정작 함수 구현을 안했을 경우...
3. .c 와 .cpp를 프로젝트에서 같이 사용할 때 .h 만 인클루드하고 .cpp 는 인클루드 하지 않을 경우...
[출처] LNK2019, LNK1120|작성자 제니(http://blog.naver.com/teiry20/10096988559)

2.
프로젝트 속성에서 링크 및 추가포함 디렉터리 설정 확인

3.
호출 규칙이 _stdcall(/Gz)로 되어 있었다

__cdecl(/Gd)로 변경하여 해결
[출처] [LNK2019] 확인할 수 없는 외부 참조입니다. | 작성자 밀크빵(http://miffyzzang.tistory.com/643)

적용해보았습니다.
결과

1.
프로젝트에 cpp 파일 포함 여부를 확인해보았으며
첨부파일 중 '코딩질문 4번' 과 같이 확인하였습니다.

2.
해당 관련 헤더파일과 cpp 파일, lib파일의 경로를 확인해보았으며
첨부파일 중 '코딩질문 2번', '코딩질문 3번' 과 같이 확인하였습니다.

3.
프로젝트 속성에서 호출 규칙을 확인해본 결과, __cdecl(/Gd)로 설정되어있으며,
혹시몰라 반대로 _stdcall(/Gz)로 변경하여 실행해보았는데 오히려 에러 갯수가 많이 늘어나 적용을 하지 않았습니다.

아무리 검색 및 잘못된 점을 확인해보려하여도 프로젝트 진행이 힘들어 이렇게 선배님들께 도움을 요청하게 되었습니다.

추가적으로 현재 프로젝트는 OPEN CASCADE라는 오픈소스를 사용하는것인데,
CMake를 이용하여 솔루션파일을 얻었고 이것을 빌드하다가 위와 같은 문제가 발생하였습니다.

마지막으로 검토해본 해결책중 하나가 라이브러리 파일이 64비트로 세팅되어있을경우, 문제가 발생할 수 있다는 정보도 보았었습니다.(현재 저는 vs2010에서 win32, debug 모드로 빌드하고 있습니다.)
하지만 검색결과 중 한 블로그에서만 해당 해결책을 발견하여 중요도가 낮다고 판단하였고, 결정적으로 제가 가지고 있는 라이브러리 파일의 비트수가 64인지 32인지 확인할 방법을 찾지 못하여 검증은 못해보았습니다.

두서 없고 질문내용이 빈약합니다.
혹시 추가 정보가 필요하시거나 코멘트해주실 분이 있으시다면 제 아이디 클릭->연락처 탭에서 메일 보내주시면 감사드리겠습니다.

긴글 읽어주셔서 감사합니다.

추운 겨울날 감기조심하세요!

File attachments: 
익명 사용자의 이미지

올리신 5번째 첨부파일보면 vc10-64 의 64가 64bit로 컴파일되었다는 뜻 아닌가요?
windows에서는 mingw나 cygwin 설치하시고 file 명령어로 확인해보세요
그것도 귀찮으면 dll 파일 리눅스로 가져가서 확인하셔도 될 겁니다.
64비트이면 cmake 하실때 64 bit 옵션 주셔야 합니다.

cmake -G "Visual Studio 2010 Win64"

처럼 하면 됩니다.

ljh9212의 이미지

감사합니다!
방금 막 확인해서 말씀하신 내용 확인하여보고 추가 답글 달겠습니다
조언 진심으로 감사드립니다.

shint의 이미지


질문하신 내용은. 라이브러리 추가 문제 처럼 보이지만요...
컴파일 오류가 날때. 확인해볼 사항.을 적어봅니다.
- lib. include 파일 경로 확인. (폴더가 추가된 순서 확인)
- 추가한 lib 이름 확인
- 그냥. 같은 폴더에 lib 파일 넣어서 해보세요.
- Rebuild All 로 확인
- 별도에 프로젝트를 만들어서 컴파일 되는지 확인
- 32비트. 64비트.
- 프로그램 파일 폴더경로. 윈도우 폴더 경로.
- static. lib. 멀티 스레드. 싱글 스레드. debug. release. cpu. dll 버전 확인.
- lib와 dll을 컴파일 한 컴파일러 확인

기타 의견.
- 잘 되는 다른. 예제소스를 구해서 컴파일. 코드프로젝트. GitHub...
- 잘 되는 다른. 프로그램과 dll을 구해서 사용

----------------------------------
이것저것 찾아본 다른 내용들입니다.
- txt 문서에 있는 프리타입 폰트 관련 링크주소
- 되는 예제도 하나 있습니다. 근데. 좀 느려보이네요.

http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=50&MAEULNO=20&no=962700&ref=962700&page=3

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

ljh9212의 이미지

아직 제가 초보여서 많이 미흡한것이 사실입니다.
양이 많지만 이것이 기본이겠지요
기본적인 내용을 알려주셔서 저에게 큰 도움이 될것같습니다.
감사합니다! 체크해보겠습니다.

개발자의 이미지

감사~

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.