# Libreria C++

**URL:** <https://www.ruby-forum.com/t/libreria-c/200085>\
**Category:** IT\
**Created:** [December 4, 2010, 1:24pm UTC](https://www.ruby-forum.com/t/libreria-c/200085 "2010-12-04T13:24:02Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/77aa72/32.png) [@Dobai-Pataky\_BSSSSl](https://www.ruby-forum.com/u/Dobai-Pataky_BSSSSl)\
**Post date:** [December 4, 2010, 1:24pm UTC](https://www.ruby-forum.com/t/libreria-c/200085/1 "2010-12-04T13:24:02Z")

</div>

Qualcuno sa dirmi come si usa una libreria scritta in C++?

---

<div class="post-metadata">

**Author:** ![maidireale](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@maidireale](https://www.ruby-forum.com/u/maidireale)\
**Post date:** [December 4, 2010, 1:45pm UTC](https://www.ruby-forum.com/t/libreria-c/200085/2 "2010-12-04T13:45:14Z")

</div>

2010/12/4 Alessandro B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Qualcuno sa dirmi come si usa una libreria scritta in C++?

credo questo sia quel che cerchi:

> **[Programming Ruby: The Pragmatic Programmer's Guide](http://ruby-doc.org/docs/ProgrammingRuby/html/ext_ruby.html)**

## er

Enrico R. /rubbo.li  
ELC Tech ™  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> **[ElcTech.com is for sale | HugeDomains](https://www.hugedomains.com/domain_profile.cfm?d=elctech.com)**
>
> Get a new domain name for your startup. Quick and professional service. Seamless domain transfers.

---

<div class="post-metadata">

**Author:** ![maidireale](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@maidireale](https://www.ruby-forum.com/u/maidireale)\
**Post date:** [January 22, 2011, 4:03pm UTC](https://www.ruby-forum.com/t/libreria-c/200085/3 "2011-01-22T16:03:50Z")

</div>

Enrico R. wrote in post #966158:

> 2010/12/4 Alessandro B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > Qualcuno sa dirmi come si usa una libreria scritta in C++?
> 
> credo questo sia quel che cerchi:  
> [Programming Ruby: The Pragmatic Programmer's Guide](http://ruby-doc.org/docs/ProgrammingRuby/html/ext_ruby.html)
> 
> ## er
> 
> Enrico R. /rubbo.li  
> ELC Tech ™  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> [http://elctech.com/](http://elctech.com/)

ho sentito parlare si SWIG. Ho letto (un po) la documentazione, e  
sembrerebbe semplice … sembrerebbe. Appunto.  
Ma non conosco C ne C++ per cui ho un po di mal di testa.

Ho capito che bisogna creare un file di interfaccia:

nome\_lib.i

con all’interno un include alla libreria C. Poi si invoca il comando

swig -ruby nome\_lib.i

che genera un file:

nome\_lib\_wrap.c

Poi si usa

gcc -c nome\_lib.c nome\_lib.c -I/usr/lib/ruby/1.8/x486-linux

e infine

gcc -shared nome\_lib.o nome\_lib\_wrap.o -o nome\_lib.so

Binding completato!!! Se avvio IRB nella cartella dove risiede la  
libreria

funzionerebbe, … ma tutto questo solo se la libreria è  
semplicissima!!!

Io vorrei bindare (si dice così?) la libreria LIBREDWG …

---

<div class="post-metadata">

**Author:** ![maidireale](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/8797f3/32.png) [@maidireale](https://www.ruby-forum.com/u/maidireale)\
**Post date:** [January 23, 2011, 6:43pm UTC](https://www.ruby-forum.com/t/libreria-c/200085/4 "2011-01-23T18:43:15Z")

</div>

On 22/01/11 16.03, Alessandro B. wrote:

> > [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> > [http://elctech.com/](http://elctech.com/)
> 
> ho sentito parlare si SWIG.  
> Ciao,

visto che la tua libreria in C prova a dare una occhiata a ffi  
([GitHub - ffi/ffi: Ruby FFI · GitHub](https://github.com/ffi/ffi)).

In pratica con ffi scrivi il binding direttamente in ruby e hai il  
grosso vantaggio di poter usare la libreria anche con jruby o rubinius.

## Ciao, Andrea.

ZephirWorks.
