首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更新Google SketchUp中的Ruby?

如何更新Google SketchUp中的Ruby?
EN

Stack Overflow用户
提问于 2010-07-26 08:05:39
回答 1查看 1.6K关注 0票数 1

目前,Google SketchUp for Mac有Ruby 1.8.5,我觉得有点过时了。我可以通过以下命令将Ruby更新为1.8.7 (OSX的版本)

代码语言:javascript
运行
复制
$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/Versions/Current
$ ls
Headers/       Resources/     Ruby
$ ls Headers/
config.h  defines.h intern.h  missing.h ruby.h

$ rm -r Headers
$ ln -s  /System/Library/Frameworks/Ruby.framework/Headers
$ ln -fs /System/Library/Frameworks/Ruby.framework/Ruby

SketchUp启动时没有问题,Ruby显示了1.8.7版本。

1.9.2

现在,我尝试更进一步,更新到1.9.2-rc2。Google SketchUp需要i386二进制文件,可以通过以下命令生成

代码语言:javascript
运行
复制
$ cd ~/ruby-1.9.2-rc2/
$ ARCHFLAGS="-arch i386"  CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure  --with-arch=i386
$ make && sudo make install

然后,我将必要的文件复制到SketchUp:

代码语言:javascript
运行
复制
$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/
$ rm Headers Ruby

$ cp /usr/local/bin/ruby Ruby
$ mkdir Headers
$ cp /usr/local/include/ruby-1.9.1/i386-darwin10.4.0/ruby/config.h Headers/
$ cp /usr/local/include/ruby-1.9.1/ruby.h Headers/
$ cp -r /usr/local/include/ruby-1.9.1/ruby/* Headers/
$ ls Headers
backward/   defines.h   dl.h        intern.h    missing.h   re.h        ruby.h      util.h      vm.h
config.h    digest.h    encoding.h  io.h        oniguruma.h regex.h     st.h        version.h

当我尝试启动SketchUp时,我会得到以下错误报告

代码语言:javascript
运行
复制
Exception Type:  EXC_BREAKPOINT (SIGTRAP)

Dyld Error Message:
  Library not loaded: @executable_path/../Frameworks/Ruby.framework/Versions/A/Ruby
  Referenced from: /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/SketchUp
  Reason: no suitable image found.  Did find:
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
    /usr/local/lib/Ruby: not a file
    /usr/lib/Ruby: not a file

Model: MacBookPro7,1, BootROM MBP71.0039.B05, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.62f5

你能告诉我为什么吗?

UPDATE1

丹·拉斯本进行了一些测试,发现了以下内容

在Win32上,当我试图让Sketchup加载任何1.9.x时,我得到了ruby函数"rb_set_kcode“的一个”入口点未找到“,该函数已不在1.9.x中(它已被重命名,并且Ruby没有将旧名称化名为新名称)。 基本上,在加载Ruby解释器之后,Sketchup调用rb_set_kcode将字符编码设置为UTF8。它适用于1.8.x分支中的任何Ruby,但在1.9.x中,Ruby项目完全重新设计了字符编码,并为所有C函数提供了新的标识符,并增加了更多的函数。 1.9.x和Sketchup的解决方案似乎是Sketchup需要“”,这意味着Boulder中的Google会改变代码。

EN

回答 1

Stack Overflow用户

发布于 2010-07-26 13:06:16

C级API在1.9.1中发生了变化。请注意,gems的路径表示API兼容性: 1.8行为.../1.8/...,1.9.2行为.../1.9.1/...

这使得在不重新编译的情况下升级变得非常困难。

您可以使用require "backports";这将使您了解1.9.x的大部分新方法,而不是新的语法或字符串编码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3333163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档