Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

요약

Microsoft Visual C++ 컴파일러 및 링커 64 비트 버전을 사용 하 여 DLL을 빌드할 때 링커 오류 번호 LNK4197 함수가 한 번 이상 내보내기 선언 된 경우 나타날 수 있습니다.

증상

링커 출력 다음과 유사할 수 있습니다.

C:\>link /NOLOGO /def:Sample.def /pdb:Sample.pdb /out:Sample.dll  Sample.objSample.obj : warning LNK4197: export 'DllSample' specified multiple times; using first specification   Creating library Sample.lib and object Sample.exp 

원인

함수가 한 번 이상 내보내기 선언 된 때 링커 오류 번호 LNK4197 만들어집니다. 내보내기 함수를 선언 하는 다음 방법 중 하나.

  • 이 함수는 C 소스 파일에서 __declspec (dllexport) 키워드를 사용 하 여 선언 됩니다.

    __declspec(dllexport) int DllSample() {   return 42;}
  • 함수 선언 된 모듈 정의 (. DEF) 파일:

    EXPORTS   DllSample

이 링커 오류가 자주 발생할 경우 __declspec (dllexport) 키워드와. DEF 파일에서 이름이 같은 함수가 정의 하에 사용 되는. DLL 프로젝트입니다.

해결 방법

이 문제를 해결 하려면 내보내기 함수 정의 한 번만 또는 __declspec (dllexport) 키워드를 사용 하 여 사용 하 여 한. DEF 파일에 있는입니다. 이 두 가지이 방법을 사용 하지 마십시오.

상태

이 동작은 의도된 것입니다.

추가 정보

한 번 이상 내보내기 함수의 선언 32 비트 버전의 Microsoft Windows c + + 컴파일러와 링커는이 문서의 "현상" 절에서 설명한 링커 오류를 생성할 수 있습니다. 32 비트와 64 비트 버전의 Windows c + + 컴파일러 및 링커 함수 내보내기 한 번만 정의 하는 것이 좋습니다.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×