🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #17740

Re: Librerias de Objetos C++

#17740
From: batsman batsman
Date: Thu, 11 Nov 1999 00:00
82 lines
3896 bytes
-----BEGIN PGP SIGNED MESSAGE-----

In article <7vt45n$b5f$1@talia.mad.ttd.net>, Dr. Slump wrote:
>Hola...
>Vereis, resulta que estoy probando el tema de crear y cargar librerias
>compartidas de forma dinamica.
>Ya sabeis, dlopen, dlclose, etc...
>Todo va bien "� como Espa�a ;-) ?" mientras utilizo funciones.
>El problema es que a mi me gusta tirar de C++ a saco, y lo que quiero es que
>las librerias sean de objetos (o clases), y poder cargar esos objetos y
>utilizar sus miembros desde una libreria.

En C++ los nombres de las funciones est�n "mangled", es decir, codifican en
el nombre tanto los tipos de argumentos como el identificador que le das en
el programa. Por ejemplo, 

00000000 T ASFile::do_file(char *, Item *)
00000230 T ASFile::do_file(char *, NewsList *)

se transforman en

00000000 T do_file__6ASFilePcP4Item
00000230 T do_file__6ASFilePcP8NewsList

el esquema del mangling es sencillo, como ves: primero el nombre de funci�n,
despu�s "__", el nombre de clase y una secuencia para indicar los
argumentos.

argumento := Clase argumentos
;

Clase := nombre
;

argumentos: /* vac�o */
 | nombre argumentos
;

nombre := P numero Nombre
          | numero Nombre
;

donde P indica puntero a, y el nombre tiene <numero> letras.
Por ejemplo, para codificar Frobnicator::do_magic(Magic *, char *)
quedar�a as�:   do_magic__11FrobnicatorP5MagicPc

Recuerda que al llamar a un m�todo debes pasarle un puntero a this como
primer argumento si lo haces desde C (es un par�metro impl�cito en C++).

En cuanto a lo de crear clases.... a menos que funcione llamar al m�todo
constructor y que devuelva un puntero... Como ves eso de usar librer�as de
clases con el interfaz dl* no es muy c�modo que digamos, y pierdes todas las
ventajas de sobrecarga de operadores, herencia... (tendr�s que hacerlo todo
a mano).

Tal vez te interese echarle un vistazo a EDMA (Entorno Distribu�do Modular
Abierto), que implementa un sistema de clases distribu�das bastante sencillo.
Si no podr�as usar ILU e incluso CORBA.

- -- 
              _           _                             
             | |__   __ _| |_ ___ _ __ ___   __ _ _ __  
             | '_ \ / _` | __/ __| '_ ` _ \ / _` | '_ \ 
             | |_) | (_| | |_\__ \ | | | | | (_| | | | |
             |_.__/ \__,_|\__|___/_| |_| |_|\__,_|_| |_|
  ________________________________________________________________
 |Visit   |  http://www.geocities.com/SiliconValley/Vista/2075    |
 |Linux   |  http://www.geocities.com/SiliconValley/Vista/4289    |
  ----------------------------------------------------------------

-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: noconv

iQEVAwUBOCsZN70Y27yr0iefAQEThggAnd834PjdzJenK+iQ7RzCHnpVagrF2/56
4Tfh0GLvXPBNdlkGsimJloev3cMEIRP16bSg2JdInXwvyiiW6IR1Svf2mt/aKhml
TYUtogMUp5WVLS6n8hYJhxQJjkQJsZXehjhPOCwU6fYaMz8IRsOcJDaVqdELb3gC
8ByYJf1KMAtRKujxW/APzfPcD36RTh5+MyvhT3Bg9BxAjbrG9iT2UZfV5XQfKkfw
kJbcMol9/6FRBkKpKL9hQxlqm23a8j2W44RY3jph/AZGRnFujdzHuoYLGrJdARUH
IgKUoAuJovyzxPXWy7M+ik0BmxUd0I1CKvswWKFjBRcCYkon4yuFbw==
=HgXk
-----END PGP SIGNATURE-----
Technical Details
Message-ID: <rg5f08.r61.ln@simpsons4ever>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <7vt45n$b5f$1@talia.mad.ttd.net>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,2d94f0ae1e9b616f,start
X-Google-Attributes: gidf86c8,public
From: batsman@simpsons4ever. (batsman)
Subject: Re: Librerias de Objetos C++
Date: 1999/11/11
Message-ID: <rg5f08.r61.ln@simpsons4ever>
X-Deja-AN: 547433064
Content-Transfer-Encoding: 8bit
References: <7vt45n$b5f$1@talia.mad.ttd.net>
Content-Type: text/plain; charset=iso-8859-1
X-Complaints-To: abuse@uni2.es
X-Trace: m2newsread.uni2.es 942347263 62.36.16.6 (Thu, 11 Nov 1999 20:07:43 MET)
Organization: Wanadoo
Mime-Version: 1.0
Reply-To: Usa el programa de descodificación 
NNTP-Posting-Date: Thu, 11 Nov 1999 20:07:43 MET
Newsgroups: es.comp.os.linux.programacion