我正在尝试使用 Monomac 的 CorePlot 0.9 绑定,但这似乎是一项艰巨的任务。 monotouch 示例的构建和运行没有任何问题,但我不需要那个。
由于绑定中仅存在 CorePlotiOS.dll,因此我必须自己为 osx 构建一个,但首先,不存在 bmake.exe,因此我必须先下载 monomac 源并自己构建它。然后我尝试构建 CorePlotOSX.dll,但这导致了一些编译问题。查看单触摸的构建脚本,我尝试使用这一行:
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 .
有什么问题吗?
我已将问题简化为:
graph = new CPTPieChart();
graph.Title = "Test";
分配似乎仍然存在,但每当我尝试访问该对象时,我就会崩溃:
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
有任何想法吗?顺便说一句,正在运行 Mac OSX 10.7.5。
好吧,那很难。经过几天的 xcode 和 monomac 斗争,结果发现,原生 CorePlot 框架(动态库)没有加载。我不知道,我应该自己加载它(我是一个 monomac 新手,抱歉......但它不是很丑陋吗?它以这种方式默默地失败了?)
有两种方法可以做到这一点:
Dlfcn.dlopen ("CorePlot.framework/CorePlot", 2); // 2 = load now, 0 = lazy load
or [assembly:MonoMac.RequiredFramework("CorePlot.framework/CorePlot")]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)