2017-11-27 16 views
0

です。問題を解決するために最善を尽くしてしまう問題が発生しますが、時間がかかり過ぎてしまいます。"_cblas_sgemm"というアーキテクチャARM64の未定義のシンボル。参照先は

私はそれを修正するつもりはありません。 Faceunityと呼ばマイプロジェクトライブラリlibnama.aのXcode 9.1、上に構築は、私のプロジェクトのためのサードパーティである、.Aライブラリは、私が$(継承)

アーキテクチャを追加した他のリンカのフラグを私のプロジェクトを追加しましたarmv7 armv7s arm64 x86_64、他の人々の方法を使用して、それは常にokではない!!!!私は、もし誰かが多分私に教えてください、感謝を修正するためのアイデアがあることを願っています!

エラー:

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

ターゲット - >ビルドフェーズ - >スクリプトの実行でスクリプトを追加する方法を使用しました。コードボックスをテキストボックスにコピーします。しかし、それは私のために働いていないかどうか私はsometingしない?交換$ {WRAPPER_NAME}や$ FRAMEWORK/Info.plistなど – nickpan

関連する問題