2017-11-27 21 views
0

문제를 해결하기 위해 최선을 다할 것이지만 시간이 너무 많이 걸리므로 작동하지 않습니다."_cblas_sgemm"이라는 아키텍처 arm64에 대한 정의되지 않은 기호는 다음에서 참조했습니다.

고칠 생각이 없습니다. 내 프로젝트 libnama.a 도서관 내 프로젝트에 대한 타사에, 엑스 코드 9.1에 구축은 Faceunity은 운영자와 도서관 내 프로젝트, 내가 $가 (상속) 추가 한 다른 링커 플래그

아키텍처를 추가라는 armv7 armv7s arm64 x86_64, 다른 사람들의 방법을 사용하면 항상 괜찮습니다 !!!! 나는 누군가가 어쩌면 고칠 수있는 아이디어가 있다면, 말해줘, 고마워!

오류 :

Undefined symbols for architecture arm64: "_cblas_sgemm", referenced from: _cnn_run in libnama.a(cnn-arm64.o) ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

기타 정보 :

enter image description here

답변

0

이것은 우리가 우리의 응용 프로그램에서 타사 라이브러리를 통합하는 일반적인 오류입니다. 필요한 라이브러리가 arm64 아키텍처 용으로 빌드되지 않았다는 것입니다.

링커가 지정된 정적 라이브러리에서 arm64에 대한 기호를 찾지 못했습니다. 정적 라이브러리에 대해 지원되는 아키텍처 사러 또는 파일

lipo -info libGoogleAnalytics.a .
Architectures in the fat file:libGoogleAnalytics.a are: armv7 i386 x86_64 arm64

0

일부 타사 라이브러리 지원 시뮬레이터가 포함되어 있기 때문입니다을 사용하여 확인하십시오. 그러나 응용 프로그램을 빌드하는 동안 시뮬레이터에 대한 아키텍처 지원에 대한 지원을 제외해야합니다.

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}" 

# This script loops through the frameworks embedded in the application and 
# removes unused architectures. 
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK 
do 
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable) 
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME" 
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH" 

EXTRACTED_ARCHS=() 

for ARCH in $ARCHS 
do 
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME" 
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH" 
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH") 
done 

echo "Merging extracted architectures: ${ARCHS}" 
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}" 
rm "${EXTRACTED_ARCHS[@]}" 

echo "Replacing original executable with thinned version" 
rm "$FRAMEWORK_EXECUTABLE_PATH" 
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH" 

done 
+0

하지만 항상 문제를 해결할 방법이 없습니다. 당신의 제안으로 내 문제를 어떻게 해결할 수 있는지 말해 줄 수 있습니까? 샘플을 말하면, 나는 시험해보고 싶다. 고마워요. – nickpan

+0

당신은 내가 이해할 수 없다고 말하고 싶습니다. 이 스크립트를 사용하면 여전히 문제에 따라이 문제가 발생하지 않습니다. 빌드 단계로 가서 더하기 버튼을 클릭하고 "새 스크립트 단계 실행"을 선택하고 스크립트 섹션에서 스크립트를 사용하십시오. –

+0

목표 -> 빌드 단계 -> 스크립트 실행에 직접 스크립트를 추가하는 방법을 사용했습니다. 텍스트 상자에 코드 붙여 넣기를 복사하십시오. 하지만 그게 나에게 도움이되지 않는다. 교환 $ {WRAPPER_NAME} 또는 $ FRAMEWORK/Info.plist와 같은 – nickpan