私は、iOSアプリケーションでGDALライブラリを使用しようと2日間苦労しました。私は私のプログラムを構築しようとするたびに、私は次のようなエラーが表示されます。HomebrewからXcode ProjectにダウンロードしたCライブラリをリンクするときにエラーが発生する
Ld /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Products/Debug-iphoneos/Mapper.app/Mapper normal arm64
cd /Users/scottdriggers/Documents/XcodeProjects/Mapper
export IPHONEOS_DEPLOYMENT_TARGET=9.0
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.3.sdk -L/Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Products/Debug-iphoneos -L-L/usr/local/Cellar/gdal/1.11.5_2/lib -L-lgdal -L/usr/local/Cellar/gdal/1.11.5_2/lib -F/Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Products/Debug-iphoneos -F/Users/scottdriggers/Documents/XcodeProjects/Mapper/Pods/DJI-SDK-iOS/iOS_Mobile_SDK -F/Users/scottdriggers/Documents/XcodeProjects/Mapper/Pods/DJI-UILibrary-iOS/iOS_UILibrary -filelist /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Intermediates/Mapper.build/Debug-iphoneos/Mapper.build/Objects-normal/arm64/Mapper.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Intermediates/Mapper.build/Debug-iphoneos/Mapper.build/Objects-normal/arm64/Mapper_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -fobjc-arc -fobjc-link-runtime -ObjC -framework DJISDK -framework DJIUILibrary -ObjC -framework DJISDK -framework DJIUILibrary -I/usr/local/Cellar/gdal/1.11.5_2/include -lgdal.1 -framework CoreGraphics -framework MapKit -framework CoreLocation -framework UIKit -framework Foundation /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Products/Debug-iphoneos/VideoPreviewer.framework/VideoPreviewer -lPods-Mapper -Xlinker -dependency_info -Xlinker /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Intermediates/Mapper.build/Debug-iphoneos/Mapper.build/Objects-normal/arm64/Mapper_dependency_info.dat -o /Users/scottdriggers/Library/Developer/Xcode/DerivedData/Mapper-goynotoybcqaezfpmrcmfwumcokh/Build/Products/Debug-iphoneos/Mapper.app/Mapper
ld: warning: directory not found for option '-L-L/usr/local/Cellar/gdal/1.11.5_2/lib'
ld: warning: directory not found for option '-L-lgdal'
ld: warning: ignoring file /usr/local/Cellar/gdal/1.11.5_2/lib/libgdal.1.dylib, file was built for x86_64 which is not the architecture being linked (arm64): /usr/local/Cellar/gdal/1.11.5_2/lib/libgdal.1.dylib
Undefined symbols for architecture arm64:
"_GDALGetRasterXSize", referenced from:
-[GEOTIFFManager averageFile:] in GEOTIFFManager.o
"_GDALGetRasterYSize", referenced from:
-[GEOTIFFManager averageFile:] in GEOTIFFManager.o
... EXPERTレベルプログラマのような多くの同様の問題...
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
は私が、私はすぐに同様の問題を持つ他の人を検索するGoogleに行って、かなりの数があることがわかりました。私はきれいにし、再び
が 私はXcodeの
ために導出されたデータフォルダの内容を削除し 私はヘッダーの更新プロジェクトをビルドしようとした
:彼らの勧告に続いて、私はいくつかの異なる順序で、以下の事柄に数回のすべてをやりました検索パス、その他のリンカーフラグ、フレームワーク検索パス、およびライブラリ検索パスを私が推薦し何も助けてくれなかったものに置き換えます。次のようにこれらの設定の現在の状態がある:
Framework検索パス:
$(継承)
ヘッダ検索パス:
$(継承)
「$ {PODS_ROOT} /ヘッダ/パブリック/ DJI-SDK-iOSの」
"$ {PODS_ROOT} /ヘッダ/公共/ DJI-UILibrary-のiOS"
/usr/local/Cellar/gdal/1.11.5_2/include
は/ usr/local /含ま
ライブラリの検索パス:
-Lは/ usr/local /セラー/ GDAL/1.11.5_2/libに
-lgdal
/usr/local/Cellar/gdal/1.11.5_2/lib
実行パス検索パス:
$ executable_path @
を(継承)/、私はこれらのエラーの多くを受けていたと私は私のターゲットのビルドフェーズに「リンクバイナリとライブラリ」タブの中にいくつかのライブラリを追加することにより、これらのいくつかを修正することができました
をフレームワークしかし、これらのGDALエラーは、たとえ私が/ usr/local/libファイルからライブラリをリンクしたとしても消えることはありません。
背景:私は私のプログラムのためのGeoTIFFファイルからピクセルを表示する必要が。私はOBJCに自分のアプリケーションを書いていますが、GDALライブラリはC++やC用です。
Homebrewを使ってこれらのライブラリをインストールしました。これは/ usr/localにリンクされているすべてのファイルが正常に動作しましたが、 Xcode。私はもともとC++でこのファイルを書いていましたが、このようなエラーの日の後にCに切り替えました。 Cに切り替えると(OBJC++でコンパイルする必要がないので)、私はまだ同じエラーが発生しています。
注:私はCocoapodsを使って他のライブラリを利用していますが、CocoapodsにはGDALライブラリがありませんでした。
プロットが厚く:私が代わりに私のiPhone 7上でそれを実行しようとしているのiPhoneシミュレータ用のプログラムを実行すると、プログラムがうまくコンパイルし、「ビルドが成功した」と言うが、それはしようとしたとき、私は別のエラーが出ます
#include "GEOTIFFManager.h"
#include "gdal.h"
#include "cpl_conv.h"
@interface GEOTIFFManager()
@end
@implementation GEOTIFFManager
- (id) init{
self = [super init];
GDALAllRegister();
return self;
}
- (float) getPixelValueOfCoordinate:(double *)coordinate FromFile:(char *)name{
GDALDatasetH* inFile = (GDALDatasetH*)GDALOpen(name, GA_ReadOnly);
double* transformation = NULL;
GDALGetGeoTransform(inFile, transformation);
double* transformedCoord;
transformedCoord = reverseTransform(coordinate, transformation);
int pixelX = floor(transformedCoord[0]);
int pixelY = floor(transformedCoord[1]);
float tempArray[1] = {-1.0};
float* output = tempArray;
GDALRasterBandH Band = GDALGetRasterBand(inFile, 1);
GDALRasterIO(Band, GF_Read, pixelX, pixelY, 1, 1, output, 1, 1, GDT_CFloat32, 0, 0);
return output[0];
}
:私は誰もが見てみたい場合は、サンプリングされ、ここでエラーが発生しますが、ファイルを含めるために、その必要はないと思う
dyld: Library not loaded: /usr/local/opt/gdal/lib/libgdal.1.dylib
Referenced from: /Users/scottdriggers/Library/Developer/CoreSimulator/Devices/1618C362-7271-4E1D-93C7-DE7CE2F15F59/data/Containers/Bundle/Application/905B2454-C731-42DC-8963-5B5C3F4A62A6/Mapper.app/Mapper
Reason: no suitable image found.
Did find: /usr/local/opt/gdal/lib/libgdal.1.dylib: mach-o, but not built for iOS simulator
:シミュレータに添付しますとにかく、ありがとうあなたの助けを借りて、私はそれを感謝します。希望yallはいくつかの役に立つヒントを提供することができます。
これらのパスをXcodeの "Library Search Paths"に追加すると、 "-L"を付けずに追加し、 "-L"を指定するとパス "/usr/local/Cellar/gdal/1.11"を追加する必要があります。 .5_2/lib-lgdal "そうですか? –
@ScottDriggers私はXcodeを一度も使用していません。私が言うことができるのは、 'ld'はあなたが得たいパラメータを得ていないということだけです。 – David
@ScottDriggersしかし、ライブラリ検索パスは、そのパスを指定する適切な場所のように聞こえ、他の場所ではライブラリ 'gdal'を指定したいと思うでしょう。 – David