Hi
I'm trying to bind with PInvoke native c++ library for iPad. The library
is a part of the bigger project
and is ported from Windows Mobile to iOS (iPad to be more precise). The
c++ code was fixed to compile
with g++ in MonoDevelop and those *.h and *.cpp files were added to
Xcode project which compiled.
In the next step small shell script did shared libs for iOS (x86
simulator and arm7 for iPad) together with
fat lib. Library is added in the root of the MonoTouch project as
content and with property copy to output dir
for PInvoke. The app ran on 2 Macs, but had problems DLL not found
exception on third Mac - and this one
had break on all exceptions turned on.
Further investigation (adding -v -Wall options in mtouch Extra arguments
for gcc) showed that mtouch
does not copy this static lib to temp folder. ld and collect scream that
file is not found.
As a test I took a lib from monotouch-samples and could bind it, but
this is objective-c.
What could cause mtouch not to copy .a file to tmp folder (/var....)
during linking
thanks in advance
Merry Christmas to all
mel
More details:
1. c++ library ported from WinCE
2. c++ fixes for g++ with MonoDevelop
3. Xode project creaed after fixes - compiles OK.
4. script that builds static libraries + fat library
5. PInvoke
[DllImport("libiPadNative.a")]
public static extern void RotateFromToIntAccHelper16BitZoom(short*
srcPointer, int srcWidth, int srcHeight, int srcOriginX, int srcOriginY,
6. mtouch options
-cxx -gcc_flags "-v -Wall -L${ProjectDir} -liPadNative -force_load
${ProjectDir}/libiPadNative.a"
NOTE: added -v -Wall to get more verbose output.
7. in MD - Excepion only if break on all Exceptions is enabled
System.DllNotFoundException has been thrown
System.DllNotFoundException: libiPadNative.a
at (wrapper managed-to-native)
iFly.ImageUtility:dll_BlendPerPixelAlpha565
(int16*,int16*,byte[2],int,int,int,int,int,int,int,int,int)
at iFly.ImageUtility.AlphaBlend (System.Drawing.Bitmap destImage,
System.Drawing.Imaging.BitmapData destData, System.Drawing.Bitmap
srcImage, System.Drawing.Imaging.BitmapData srcData, Int32 destX, Int32
destY, Int32 alphaFactor, System.Byte[,] alphaFactors) [0x0000b] in
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.Core/##Core/#Drawing/ImageUtility/ImageUtility.Blending.cs:35
at iFly.ImageLayerManager.Combine (Boolean showCenterMark) [0x00364] in
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.Core/##Core/#Drawing/ImageLayerManager.cs:309
at iFly.AviationMap.CombineAndDraw () [0x00026] in
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.Core/##Core/AviationMap/AviationMap.cs:745
at iFly.AviationMap.RenderAviationMap () [0x00248] in
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.Core/##Core/AviationMap/AviationMap.cs:1489
8. Added LinkWith atribute
-> does not compile (link errors)
-> Liker errors
[assembly: LinkWith ("libiPadNative.a", LinkTarget.Simulator |
LinkTarget.ArmV6 | LinkTarget.ArmV7, ForceLoad = true)]
even w/o armv6
[assembly: LinkWith ("libiPadNative.a", LinkTarget.Simulator |
LinkTarget.ArmV7, ForceLoad = true)]
Just for test sake:
[assembly: LinkWith ("libXMBindingLibrarySampleUniversal.a",
LinkTarget.Simulator | LinkTarget.ArmV6 | LinkTarget.ArmV7, ForceLoad =
true)]
9. Build output -
Compiling to native code
/Developer/MonoTouch/usr/bin/mtouch -sdkroot
"/Applications/Xcode.app/Contents/Developer" -v --cache
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/obj/Debug/mtouch-cache"
--nomanifest --nosign -sim
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app"
-r
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.Core/bin/iPhoneSimulator/Debug/iFlyCore.dll"
-r "/Developer/MonoTouch/usr/lib/mono/2.1/System.dll" -r
"/Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll" -r
"/Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll" -r
"/Developer/MonoTouch/usr/lib/mono/2.1/MonoTouch.Dialog-1.dll" -r
"/Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll" -debug -profiling
-nolink -sdk "6.0" -targetver "3.2" --sgen --abi=i386 "-cxx" --gcc_flags
"\"-v\" \"-Wall\"
\"-L/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad\"
\"-liPadNative\" \"-force_load\"
\"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/libiPadNative.a\""
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.exe"
MonoTouch version 6.0.7 using framework:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk
Copied
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.exe
to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/iFlyiPad.exe
Copied /Developer/MonoTouch/usr/lib/mono/2.1/mscorlib.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/mscorlib.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/monotouch.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/monotouch.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/System.Core.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/System.Core.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/System.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/System.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/Mono.Security.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/Mono.Security.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/System.Xml.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/System.Xml.dll
Copied
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/iFlyCore.dll
to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/iFlyCore.dll
Copied
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/XMBindingLibrary.dll
to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/XMBindingLibrary.dll
Copied
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/ICSharpCode.SharpZipLib.dll
to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/ICSharpCode.SharpZipLib.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/MonoTouch.Dialog-1.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/MonoTouch.Dialog-1.dll
Copied /Developer/MonoTouch/usr/lib/mono/2.1/System.Json.dll to
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/bin/iPhoneSimulator/Debug/iFlyiPad.app/System.Json.dll
Generated
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/main.i386.m
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++
-arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version=2
-miphoneos-version-min=3.2 -arch i386 -std=c99
-I/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/include
-isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk
-c
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/main.i386.m
-o
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/obj/Debug/mtouch-cache/main..i386.cache.w7REfNsRQxmZBp8EwXCMx5veT0s=.o
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++
-Wl,-no_pie -arch i386 -gdwarf-2 -fobjc-legacy-dispatch
-fobjc-abi-version=2 -miphoneos-version-min=3.2 -arch i386 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/obj/Debug/mtouch-cache/main..i386.cache.w7REfNsRQxmZBp8EwXCMx5veT0s=.o
-o
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/iFlyiPad -framework
CFNetwork -framework Foundation -framework GameKit -framework MapKit
-framework MediaPlayer -framework MessageUI -framework OpenGLES
-framework StoreKit -framework UIKit -framework AddressBookUI -framework
SystemConfiguration -framework AddressBook -framework AudioToolbox
-framework AVFoundation -framework QuartzCore -framework CoreGraphics
-framework CoreLocation -framework MobileCoreServices -framework
Security -framework CoreData -framework ExternalAccessory
-weak_framework AssetsLibrary -weak_framework Accounts -weak_framework
CoreBluetooth -weak_framework CoreTelephony -weak_framework EventKit
-weak_framework EventKitUI -weak_framework CoreMotion -weak_framework
GLKit -weak_framework iAd -weak_framework NewsstandKit -weak_framework
Social -weak_framework Twitter -weak_framework PassKit -weak_framework
CoreImage -weak_framework CoreText -weak_framework ImageIO
-weak_framework CoreMedia -weak_framework CoreMIDI -weak_framework
CoreVideo -weak_framework AdSupport -weak_framework QuickLook -lz -u
_mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream
-u _WriteZStream -u _monotouch_create_managed_ref -u
_monotouch_release_managed_ref -liconv -lmonosgen-2.0 -lmonotouch-sgen
-L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib
-lmono-profiler-log -u _mono_profiler_startup_log -u
_catch_exception_raise -force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libiPadNative.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
"-v" "-Wall" "-L/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad"
"-liPadNative" "-force_load"
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/libiPadNative.a"
Process exited with code 1, command:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++
-Wl,-no_pie -arch i386 -gdwarf-2 -fobjc-legacy-dispatch
-fobjc-abi-version=2 -miphoneos-version-min=3.2 -arch i386 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/obj/Debug/mtouch-cache/main..i386.cache.w7REfNsRQxmZBp8EwXCMx5veT0s=.o
-o
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/iFlyiPad -framework
CFNetwork -framework Foundation -framework GameKit -framework MapKit
-framework MediaPlayer -framework MessageUI -framework OpenGLES
-framework StoreKit -framework UIKit -framework AddressBookUI -framework
SystemConfiguration -framework AddressBook -framework AudioToolbox
-framework AVFoundation -framework QuartzCore -framework CoreGraphics
-framework CoreLocation -framework MobileCoreServices -framework
Security -framework CoreData -framework ExternalAccessory
-weak_framework AssetsLibrary -weak_framework Accounts -weak_framework
CoreBluetooth -weak_framework CoreTelephony -weak_framework EventKit
-weak_framework EventKitUI -weak_framework CoreMotion -weak_framework
GLKit -weak_framework iAd -weak_framework NewsstandKit -weak_framework
Social -weak_framework Twitter -weak_framework PassKit -weak_framework
CoreImage -weak_framework CoreText -weak_framework ImageIO
-weak_framework CoreMedia -weak_framework CoreMIDI -weak_framework
CoreVideo -weak_framework AdSupport -weak_framework QuickLook -lz -u
_mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream
-u _WriteZStream -u _monotouch_create_managed_ref -u
_monotouch_release_managed_ref -liconv -lmonosgen-2.0 -lmonotouch-sgen
-L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib
-lmono-profiler-log -u _mono_profiler_startup_log -u
_catch_exception_raise -force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libiPadNative.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
"-v" "-Wall" "-L/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad"
"-liPadNative" "-force_load"
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/libiPadNative.a"
Using built-in specs.
Target: i686-apple-darwin11
Configured with:
/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/src/configure
--disable-checking --enable-werror
--prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2
--mandir=/share/man --enable-languages=c,objc,c++,obj-c++
--program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/
--with-slibdir=/usr/lib --build=i686-apple-darwin11
--enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~67/dst-llvmCore/Developer/usr/local
--program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11
--target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/collect2
-dynamic -arch i386 -force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libiPadNative.a
-force_load
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libXMBindingLibrarySampleUniversal.a
-force_load
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/libiPadNative.a
-iphoneos_version_min 3.2 -syslibroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk
-weak_reference_mismatches non-weak -u _mono_pmip -u _CreateZStream -u
_CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -u
_monotouch_create_managed_ref -u _monotouch_release_managed_ref -u
_mono_profiler_startup_log -u _catch_exception_raise -o
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/iFlyiPad -lcrt1.o
-L/Developer/MonoTouch/SDKs/MonoTouch.iphonesimulator.sdk/usr/lib
-L/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad
-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.0.sdk/usr/lib
-L/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2/lib/gcc/i686-apple-darwin11/4.2.1
-no_pie
/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/obj/Debug/mtouch-cache/main..i386.cache.w7REfNsRQxmZBp8EwXCMx5veT0s=.o
-framework CFNetwork -framework Foundation -framework GameKit -framework
MapKit -framework MediaPlayer -framework MessageUI -framework OpenGLES
-framework StoreKit -framework UIKit -framework AddressBookUI -framework
SystemConfiguration -framework AddressBook -framework AudioToolbox
-framework AVFoundation -framework QuartzCore -framework CoreGraphics
-framework CoreLocation -framework MobileCoreServices -framework
Security -framework CoreData -framework ExternalAccessory
-weak_framework AssetsLibrary -weak_framework Accounts -weak_framework
CoreBluetooth -weak_framework CoreTelephony -weak_framework EventKit
-weak_framework EventKitUI -weak_framework CoreMotion -weak_framework
GLKit -weak_framework iAd -weak_framework NewsstandKit -weak_framework
Social -weak_framework Twitter -weak_framework PassKit -weak_framework
CoreImage -weak_framework CoreText -weak_framework ImageIO
-weak_framework CoreMedia -weak_framework CoreMIDI -weak_framework
CoreVideo -weak_framework AdSupport -weak_framework QuickLook -lz
-liconv -lmonosgen-2.0 -lmonotouch-sgen -lmono-profiler-log -liPadNative
-lstdc++ -lgcc -lSystem
ld: file not found:
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp27460cbf.tmp/libiPadNative.a
collect2: ld returned 1 exit status
error MT5201: Native linking failed. Please review user flags provided
to gcc: "-v" "-Wall"
"-L/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad"
"-liPadNative" "-force_load"
"/Users/mc/Desktop/src/Commercial/iFlySVN/src/iFly.iPad/libiPadNative.a"
Miljenkos-MacBook-Pro:tmp50492440.tmp mc$ pwd
/var/folders/6t/g3f6r4mx55b2vcb9z377rvzw0000gn/T/tmp50492440.tmp
Miljenkos-MacBook-Pro:tmp50492440.tmp mc$ ls -al
total 3608
drwxr-xr-x 6 mc staff 204 Dec 23 17:36 .
drwx------ 34 mc staff 1156 Dec 23 21:04 ..
-rw-r--r-- 1 mc staff 11264 Dec 23 17:36 XMBindingLibrary.dll
-rw-r--r-- 1 mc staff 1634304 Dec 23 17:36 iFlyCore.dll
-rw-r--r-- 1 mc staff 194448 Dec 23 17:36
libXMBindingLibrarySampleUniversal.a
-rw-r--r-- 1 mc staff 431 Dec 23 17:36 main.i386.m
--
Miljenko Cvjetko dipl.ing. ET
Direktor/CEO
Projektant rješenja/Solution Architect
Razvojni programer/Senior developer
Voditelj projekta/Project Manager
IX južna obala 13
Kajzerica Zagreb
T: 385 1 7775555
M: 385 91 557 447 3
F: 385 1 7779556
e: [email protected]
w: http://holisticware.net
_______________________________________________
MonoTouch mailing list
[email protected]
http://lists.ximian.com/mailman/listinfo/monotouch