Hi again
Followup! OK. I have solved a problem.
Bunch of leads/links compiled together read twice forward and backward
and the devil is in the detail...
Most of the stuff can be done according to:
http://docs.xamarin.com/ios/Guides/Advanced_Topics/Native_Interop
Only in the part for Linking:
http://docs.xamarin.com/ios/Guides/Advanced_Topics/Native_Interop#Linking_Your_Library
it is important to add that configuration of mtouch tool for linking
with extra arguments for gcc
[-cxx] -gcc_flags "-L${ProjectDir} -lMylibrary -lSystemLibrary
-framework CFNetwork -force_load ${ProjectDir}/libMyLibrary.a"
[-cxx] optional - for c++ only
******* makes exported symbols internal **************, so DllImport
should look like:
[DllImport("__Internal")]
happy hollidays
Mel
On 2012.12.23 23:19, Miljenko Cvjetko wrote:
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