2013-01-09 3 views
1

J'essaie d'utiliser la liaison CorePlot 0.9 pour monomac, mais cela semble être une tâche difficile. L'exemple monotouch se construit et fonctionne sans problème, mais je n'en ai pas besoin. Comme seulement un CorePlotiOS.dll était présent dans la liaison, j'ai dû en construire un pour osx moi-même, mais d'abord, aucun bmake.exe n'était présent, donc j'ai dû télécharger la source monomac et la construire moi-même premier. Ensuite, j'ai essayé de construire le CorePlotOSX.dll mais cela a causé quelques problèmes de compilation. En regardant le script de compilation pour le toucher mono J'ai essayé avec cette ligne à la place:Liaisons CorePlot MonoMac s'écraser

MONO_PATH=$(MONOMAC)/src mono $(MONOMAC)/src/bmac.exe -e -unsafe coreplot.cs -s=enums.cs -x=extras.cs -x=AssemblyInfo.cs --sourceonly=list --tmpdir=osx -r:System.Drawing -r:MonoMac -lib:$(MONOMAC)/src -baselib:$(MONOMAC)/src/MonoMac.dll . 

Quelque chose ne va là-bas?

J'ai réduit le problème à ceci:

graph = new CPTPieChart(); 
graph.Title = "Test"; 

L'allocation semble survivre, mais chaque fois que je tente d'accéder à l'objet, je crash:

Exception Type: EXC_BAD_ACCESS (SIGSEGV) 
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000000bf887fac 

VM Regions Near 0xbf887fac: 
    Stack     00000000b038d000-00000000b040e000 [ 516K] rw-/rwx SM=COW 
--> Stack     00000000bc088000-00000000bf888000 [ 56.0M] ---/rwx SM=NUL 
    Stack     00000000bf888000-00000000c0088000 [ 8192K] rw-/rwx SM=COW 

Application Specific Information: 
objc[17645]: garbage collection is OFF 

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 
0 com.apple.CoreFoundation  0x97c8aebc __CFStringEncodeByteStream + 12 
1 com.apple.Foundation   0x9ac8ed49 -[NSString(NSStringOtherEncodings) getBytes:maxLength:usedLength:encoding:options:range:remainingRange:] + 263 
2 com.apple.Foundation   0x9ac8e8ee bytesInEncoding + 213 
3 com.apple.Foundation   0x9ac8e814 -[NSString(NSStringOtherEncodings) UTF8String] + 42 
4 com.apple.CoreFoundation  0x97ce478c -[__NSCFString UTF8String] + 204 
5 ???        0x00f91208 0 + 16323080 
6 ???        0x030d708c 0 + 51212428 
7 ???        0x030d703c 0 + 51212348 
8 ???        0x016877d4 0 + 23623636 

Toutes les idées? En cours d'exécution Mac OSX 10.7.5 btw.

Répondre

2

Ok, c'était dur. Après plusieurs jours de combat contre xcode et monomac, il s'est avéré que le framework natif CorePlot (dynamic lib) n'était pas chargé. Je n'étais pas au courant, que j'étais supposé le charger moi-même (je suis un newbie monomac, désolé ... mais n'est-ce pas plutôt moche qu'il échoue silencieusement de cette façon ??)

Deux façons de le faire: soit

Dlfcn.dlopen ("CorePlot.framework/CorePlot", 2); // 2 = load now, 0 = lazy load 

ou [assembly:MonoMac.RequiredFramework("CorePlot.framework/CorePlot")]