Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

error LNK2019: _free

156 views
Skip to first unread message

TheOne

unread,
Apr 30, 2008, 5:43:52 AM4/30/08
to
VS2008에서

====
1>Linking...
1>MyDll.obj : error LNK2019: _free 외부 기호(참조 위치: _DllMain@12 함수)에서 확인하지
못했습니다.
1>MyDll.obj : error LNK2019: _malloc 외부 기호(참조 위치: _DllMain@12 함수)에서 확인하
지 못했습니다.
1>.\Release/MyDll.dll : fatal error LNK1120: 2개의 확인할 수 없는 외부 참조입니다.
====

이런 에러 메시지가 나옵니다.

프로젝트 속성창 > Configuration Properties > C/C++ > Code Generation
> Runtime Library

는 Multi-threaded (/MT) 로 지정되어 있습니다. 이렇게 지정이 되어 있으면, 자동으로 libcmt.lib 을 가
지고 정적으로 링크하도록 되어 있는 걸로 알고 있습니다. 그런데 왜 함수들을 못찾는다고 할까요? 명시적으로 Linker >
input 에 넣으면 링크에러는 사라지는데,

====
1>Linking...
1>libcmt.lib(crt0.obj) : error LNK2019: _main 외부 기호(참조 위치:
___tmainCRTStartup 함수)에서 확인하지 못했습니다.
1>.\Release/MyDll.dll : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.
====
같은 에러 메시지가 뜨네요. dll 빌드하는 건데 말이죠. 명시적으로 input에 넣는 건 아닌 것 같은데, 왜 이런 문제가 발
생할까요?

또, memcpy 도 C런타임라이브러리에 속하는 함수로 알고 있는데, memcpy 만 들어 있을 경우에는 정상적으로 링크합니
다. 아래는 테스트 하던 코드입니다.

====

char a[8] = "Aaa";
char b[8] = "EndDoc";

memcpy(a, b, 7);

#ifdef MAKE_LINK_ERROR
char *p = NULL;

p = (char*)malloc(333);
memcpy(p, b, 7);

free(p);
#endif
====

여기 이용하는 분들이 없는 것 같지만, 질문 올려 놓습니다.

----
D

cozy...@gmail.com

unread,
May 5, 2008, 5:56:58 PM5/5/08
to
링크 옵션중에 NODEFAULTLIB가 포함된건 아닐까요?

http://msdn.microsoft.com/en-us/library/3tz4da4a(VS.80).aspx
0 new messages