Getting Ruby C Extensions to work with 64-bit Windows
-
I've downloaded the C extension examples from the repository at github.com/SketchUp/ruby-c-extension-examples and played around with them a bit in Visual Studio 2015.
When I try to build them, the Hello World example builds fine, but when I try to run it in Sketchup I get the following error:
@unknownuser said:
require 'SUEX_HelloWorld'
Error: #<LoadError: 193: %1 is not a valid Win32 application. - C:/code/ruby-c-extension-examples-master/ruby-c-extension-examples-master/Debug (1.8)/SUEX_HelloWorld.so>The SUEX_UsingSWIG fails to build courtesy of a "MSC version unmatch: _MSC_VER: 1600 is expected" error.
I found the following thread http://forums.sketchup.com/t/call-c-from-ruby-in-sketchup/17272/8 with some talk about previous versions of Visual Studio (2010 and 2013) but the current example repository has comments about making changes to allow for a VS2015 so...
I guess my main question is whether I need to make some changes to the Visual Studio project (settings somewhere?) to get it to build for 64 bit (I'm running SketchUp Pro 2016 on 64-bit Windows 10)? Or is there some other issue?
If I can just get the Hello World example to run I'll be off and running, but I've reached the point where I'm stumped. Thanks for any help.
-
Remember to pick the correct build configuration for the SketchUp version you launch.
Not sure about the SWIG project - just remove it if you don't intend to use it.
-
Of course! I feel quite silly (my only defense is that I'm very much a novice with Visual Studio). Thanks very much for the response - in a bit I'll write up a simple walkthrough in case someone else stumbles into this thread in the same situation that I was in.
-
No worries. Nothing is obvious when you are new to it.
We (SketchUp) actually have a tutorial on this planned. Hope to have it published later this fall. -
So I'm running into a new issue; not sure if this has been encountered by anyone else, but building a "Debug" version of SUEX_HelloWorld works fine (Debug 2.0/x64) works fine, but trying to build a "Release" version fails with a bunch of C2375 errors (redefinition; different linkage) for a bunch of geometric functions. SWIG doesn't have the same problem. Any ideas?
-
Check out this issue on the GitHub Repo:
https://github.com/SketchUp/ruby-c-extension-examples/issues/6
Thom posted a revised RubyLib.h file that fixes these.
-
HE SHOOTS HE SCORES!
That fixed it - thanks so much!
Advertisement