[ios] i386 아키텍처에 대한 정의되지 않은 기호 : _OBJC_CLASS _ $ _ SKPSMTPMessage “, 오류 :

백그라운드에서 응용 프로그램에서 전자 메일을 보내기 위해 프레임 워크를 가져 왔습니다 SKPSMTPMessage. 누군가 아래 오류가 표시되는 이유를 제안 할 수 있습니까?

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_SKPSMTPMessage", referenced from:
  objc-class-ref in ConfirmController.o

"_kSKPSMTPPartContentTransferEncodingKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartMessageKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

"_kSKPSMTPPartContentTypeKey", referenced from:
  -[ConfirmController sendEmail] in ConfirmController.o

ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status

프레임 워크를 가져 오는 소스 :-

MFMailComposeViewController에서 필드 잠금

최신 정보 :

답 : 프로젝트 위로 폴더를 끌어다 놓고 복사를 클릭하십시오. 그것은 프로젝트 확인란과 대상 확인란도 선택합니다.



답변

클래스의 .m 파일이 대상의 “빌드 단계”탭의 “컴파일 소스”단계에 나열되어 있지 않으면이 유형의 오류가 발생할 수 있습니다. 일반적으로 Xcode 가이 작업을 수행하지만 플롯이 손실되고 .m 파일을 수동으로 추가해야합니다.

이것을하기 위해:

TargetSettings-> 빌드 단계-> 소스 컴파일-> .m 클래스 추가-> 빌드 및 실행


답변

나를 위해이 문제는 프레임 워크가없는 것으로 판명되었습니다. em을 추가하면 효과가 있습니다.


답변

유효한 아키텍처 및 활성 아키텍처 만 빌드 특성을 확인하십시오.

여기에 이미지 설명을 입력하십시오


답변

cocoapods를 사용하는 경우 대상의 빌드 설정 에 다른 링커 플래그 섹션 에 $ (상 속됨)이 포함되어 있는지 확인하십시오.

여기에 이미지 설명을 입력하십시오


답변

프레임 워크가 armv (x) 용으로 컴파일 되었습니까? iOS 장치에서 실행되지 않는 i386 용으로 컴파일 된 것처럼 보입니다. 또는 armv (x) 용으로 컴파일되어 시뮬레이터 (i386 코드)에서 실행하려고합니다. 위에 표시된 빌드 설정 Akshay를 사용하여 프레임 워크를 실행할 칩에 맞게 프레임 워크가 올바르게 컴파일되었는지 확인하십시오.


답변

xcode에서 다른 프로젝트를 가져오고 현재 프로젝트와 가져 오기 프로젝트 모두 컴파일러 소스에 동일한 파일이있는 경우 “빌드 단계”설정에서 현재 프로젝트에서 동일한 파일을 제거하십시오.


답변

예, 이것은 앨런의 말과 관련이 있습니다 … 소스 파일의 유틸리티 섹션에서 TargetMembership을 찾으십시오. 해당 파일을 프로젝트에 연결하는 확인란이 있습니다. 이것을 확인하면이 문제도 해결되었습니다.