Absturz Ich bin mit Chris Branson RedLaser Monotouch Bindungen und Probe von hier: https://github.com/chrisbranson/RedLaserSampleMit RedLaser SDK über Monotouch, sobald BarcodePickerController
Erstens hatte diese auch Probleme mit diesem Beispielprojekt, um zu helfen, ich um sowohl das Makefile zu aktualisieren, um die RedLaser.dll MonoTouch-Bindungen zu erstellen, als auch das Beispiel MonoDevelop csproj, um die eigentliche App-Kompilierung zu erhalten.
Makefile
Das Make-Datei von Chris geliefert dekomprimiert den Download RedLaser SDK, aber RedLaser ihre Namenskonvention geändert und es war so nicht mehr. Ich vereinfacht es, anstatt dass der Benutzer die libRedLaserSDK.a setzen in das Build-Verzeichnis-Datei manuell:BTOUCH=/Developer/MonoTouch/usr/bin/btouch BUILDVER=build139 VERSION=3.2.4 BINDIR=./bin/ all: $(BINDIR)RedLaser.dll $(BINDIR)libRedLaserSDK.a: @echo "You'll need to obtain a copy of RedLaserDevSDK-$(VERSION).zip from" @echo "http://redlaser.com/sdk/index.php" @echo Locate the libRedLaserSDK.a file and place within @echo $(BINDIR) @echo @open http://redlaser.com/sdk/index.php @exit 1 $(BINDIR)RedLaser.dll: Makefile AssemblyInfo.cs RedLaser.cs enums.cs $(BINDIR)libRedLaserSDK.a $(BTOUCH) [email protected] -e RedLaser.cs enums.cs AssemblyInfo.cs --link-with=$(BINDIR)libRedLaserSDK.a,libRedLaserSDK.a clean: -rm -rf $(BINDIR)*.dll
Das Verzeichnis der Make-Datei enthält auch die Dateien
redlaser.cs
,enums.cs
undAssemblyInfo.cs
(dh die gleiche wie Chris) enthalten sollte .MonoDevelop Projekt Buildeinstellungen
Ich denke, der Grund, warum dies funktioniert nicht mehr um einen Fehler in MonoDevelop oder Monotouch war und wie es die ‚Zusätzliche mTouch Argumente‘ erweitert, wenn sie Anführungszeichen enthalten. Chris ursprünglichen Argumente sah wie folgt aus:-cxx -gcc_flags="-framework SystemConfiguration -framework CFNetwork -framework CoreVideo -framework CoreMedia -framework AVFoundation -framework OpenGLES -framework Security -L${ProjectDir}/Lib -lRedLaserSDK -ObjC"
MonoDevelop analysieren dies nicht richtig, sondern das Einfügen Anführungszeichen um jede Option durch ein Leerzeichen getrennt. Suchen Sie in der Build-Ausgabe (unter ‚Kompilieren zu nativen Code‘) hat gezeigt, dass dies erweitert wurde:
"/Users/tyson/Downloads/chrisbranson-RedLaserSample-1a5545f-1/RedLaserSample/Lib/RedLaser.dll" -debug -nolink -sdk "5.1" -targetver "5.1" --armv7 "-cxx" "-gcc_flags=\"-framework" "SystemConfiguration" "-framework" "CFNetwork" "-framework" "CoreVideo" "-framework" "CoreMedia" "-framework" "AVFoundation" "-framework" "OpenGLES" "-framework" "Security" "-L/Users/tyson/Downloads/chrisbranson-RedLaserSample-1a5545f-1/RedLaserSample/Lib" "-lRedLaserSDK" "-ObjC\""
beinhaltet die Lösung explizite Anführungszeichen um die gesamte ‚gcc_flags‘ Option hinzugefügt, manuell die inneren Anführungszeichen zu entkommen. z:
"-cxx" "-gcc_flags=\"-framework SystemConfiguration -framework CFNetwork -framework CoreVideo -framework CoreMedia -framework AVFoundation -framework OpenGLES -framework Security -L${ProjectDir}/Lib -lRedLaserSDK -ObjC\""
Dies erweitert richtig in:
"/Users/tyson/Downloads/chrisbranson-RedLaserSample-1a5545f-1/RedLaserSample/Lib/RedLaser.dll" -debug -nolink -sdk "5.1" -targetver "5.1" --armv7 "-cxx" "-gcc_flags=\"-framework SystemConfiguration -framework CFNetwork -framework CoreVideo -framework CoreMedia -framework AVFoundation -framework OpenGLES -framework Security -L/Users/tyson/Downloads/chrisbranson-RedLaserSample-1a5545f-1/RedLaserSample/Lib -lRedLaserSDK -ObjC\""
Ok, also jetzt, dass ich es kompilieren hatte versuchte ich es auf meinem Handy zu laufen. Die App lädt gut und ruft erfolgreich das RedLaser SDK über die RedLaserSDK.CheckReadyStatus()
Funktion auf. Aber sobald traf ich die Scan-Taste (die lädt die BarcodePickerController
) stürzt mit einer nativen Ausnahme tief im RedLaser SDK:
terminate called throwing an exception
Native stacktrace:
0 RedLaserSample 0x0159d62d mono_handle_native_sigsegv + 244
1 RedLaserSample 0x015b6251 sigabrt_signal_handler + 112
2 libsystem_c.dylib 0x319b67ed _sigtramp + 48
3 libsystem_c.dylib 0x319ac20f pthread_kill + 54
4 libsystem_c.dylib 0x319a529f abort + 94
5 libc++abi.dylib 0x34fb1f6b abort_message + 46
6 libc++abi.dylib 0x34faf34d _ZL17default_terminatev + 24
7 libobjc.A.dylib 0x358e536f _objc_terminate + 170
8 libc++abi.dylib 0x34faf3c5 _ZL19safe_handler_callerPFvvE + 76
9 libc++abi.dylib 0x34faf451 _ZdlPv + 0
10 libc++abi.dylib 0x34fb079f __cxa_throw + 122
11 RedLaserSample 0x000404a9 _ZN5zxing6qrcode19FinderPatternFinder18selectBestPatternsEv + 172
12 RedLaserSample 0x000415e9 _ZN5zxing6qrcode19FinderPatternFinder4findERKNS_11DecodeHintsE + 512
13 RedLaserSample 0x0003a7f7 _ZN5zxing6qrcode8Detector6detectERKNS_11DecodeHintsE + 366
14 RedLaserSample 0x00046b97 _ZN5zxing6qrcode12QRCodeReader6decodeENS_3RefINS_12BinaryBitmapEEENS_11DecodeHintsE + 130
15 RedLaserSample 0x0004ec35 _ZN5zxing6Reader6decodeENS_3RefINS_12BinaryBitmapEEE + 240
16 RedLaserSample 0x00058455 -[FormatReader decode:] + 116
17 RedLaserSample 0x00013835 -[ZXingDecoder findCodesInBitmap:bytesPerRow:width:height:] + 656
18 RedLaserSample 0x0005f6af -[BarcodePhotoEngine zxingFindBarcodesInPixmap:] + 222
19 RedLaserSample 0x00055f25 __38-[BarcodeEngine findBarcodesInPixMap:]_block_invoke_059 + 76
20 libdispatch.dylib 0x34635c59 _dispatch_call_block_and_release + 12
21 libdispatch.dylib 0x34637d0f _dispatch_queue_drain + 274
22 libdispatch.dylib 0x34637b75 _dispatch_queue_invoke$VARIANT$mp + 40
23 libdispatch.dylib 0x346387e7 _dispatch_worker_thread2 + 210
24 libsystem_c.dylib 0x31967dfb _pthread_wqthread + 294
25 libsystem_c.dylib 0x31967cd0 start_wqthread + 8
=================================================================
Got a SIGABRT while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
Ausführen das sehr ähnlich RedLaser Xcode Beispielprojektes (dh keine Monotouch Beteiligung, alle Ziele -c) funktioniert gut.
Auch wenn es von Bedeutung ist, ermöglicht das Deaktivieren aller Barcode-Scan-Typen BarcodePickerController
zu laden und die Kamera anzuzeigen. Natürlich erkennt es nie einen Barcode.
Nur eine Idee, haben Sie versucht, ein MonoTouch-Bindungsprojekt anstelle von ihrem Makefile zu verwenden? Ich hatte immer mehr Glück, Objective-C-Bindungen auf diese Weise zu kompilieren (und Sie können es leicht in die Quellcodeverwaltung einfügen). – jonathanpeppers