TheOne
unread,Apr 30, 2008, 5:43:52 AM4/30/08You do not have permission to delete messages in this group
Sign in to report message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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