Apuesto a que no has añadido StringIntMap.o a los objetos de tu ejecutable.

Salud,
Paco

--
Francisco Moya Fernandez      Computer Architecture and Networks Group
Assistant Professor
[EMAIL PROTECTED]                      School of Computer Science
Fax:(+34 926) 29 53 54                University of Castilla-La Mancha
Tel:(+34 926) 29 54 83                      http://www.inf-cr.uclm.es/



-----Mensaje original-----
De: [EMAIL PROTECTED] en nombre de Manuel David Jiménez Patiño
Enviado el: lun 12/11/2007 21:27
Para: [email protected]
Asunto: [CRySoL] Freeze map
 
Hola a todos aquí sigo sufriendo con Ice.

Después de superar la etapa de IceGrid ahora tocaba utilizar freeze map.

Os cuento como he intentado solucionar mi problema original
intentándolo probar con un ejemplo sencillo:

En un server tenía:

struct Server: public Application {
        int run(int argc, char* argv[]) {
                shutdownOnInterrupt();
                
                Freeze::ConnectionPtr connection =
Freeze::createConnection(communicator(), "db");
...
...
...
...

communicator()->waitForShutdown();
                return 0;
        }
};


Y para poder utilizar freeze map utilizaba los siguientes pasos:

añadir en el makefile la siguiente línea:

 LDLIBS= -lFreeze

Ahora en línea de comandos poner:

$ slice2freeze --dict StringIntMap,string,int StringIntMap

     Se crea un contenedor denominado StringIntMap con un tipo de
clave string y un valor
int. El último argumento hace referencia al nombre de los archivos de
salida, que en este caso
son StringIntMap.h y StringIntMap.cpp.

Le doy a Intro y .... Bien! funciona.

Ahora añado estas líneas al archivo server.cpp:

#include <StringIntMap.h>
#include <Freeze/Freeze.h>


hago en línea de comandos:

$make

y bien funciona.


EL PROBLEMA VIENE CUANDO EN SERVER.CPP añado la siguiente línea:

struct Server: public Application {
        int run(int argc, char* argv[]) {
                shutdownOnInterrupt();
                
                Freeze::ConnectionPtr connection =
Freeze::createConnection(communicator(), "db");
                StringIntMap map(connection, "simple"); <----- ESTA ES LA QUE
PROVOCA QUE MI PROGRAMA HAGA PUTUFF
                



Ahora en línea de comandos pongo:

$make

y me saca el siguiente jeroglífico:

 In function `Freeze::Map<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int,
StringIntMapKeyCodec, StringIntMapValueCodec,
Freeze::IceEncodingCompare>::Map(IceInternal::Handle<Freeze::Connection>
const&, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool, Freeze::IceEncodingCompare
const&)':
Server2.cc:(.text._ZN6Freeze3MapISsi20StringIntMapKeyCodec22StringIntMapValueCodecNS_18IceEncodingCompareEEC1ERKN11IceInternal6HandleINS_10ConnectionEEERKSsbRKS3_[Freeze::Map<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int,
StringIntMapKeyCodec, StringIntMapValueCodec,
Freeze::IceEncodingCompare>::Map(IceInternal::Handle<Freeze::Connection>
const&, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool, Freeze::IceEncodingCompare
const&)]+0xb3): undefined reference to
`StringIntMapValueCodec::typeId()'
Server2.cc:(.text._ZN6Freeze3MapISsi20StringIntMapKeyCodec22StringIntMapValueCodecNS_18IceEncodingCompareEEC1ERKN11IceInternal6HandleINS_10ConnectionEEERKSsbRKS3_[Freeze::Map<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int,
StringIntMapKeyCodec, StringIntMapValueCodec,
Freeze::IceEncodingCompare>::Map(IceInternal::Handle<Freeze::Connection>
const&, std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const&, bool, Freeze::IceEncodingCompare
const&)]+0xd6): undefined reference to
`StringIntMapKeyCodec::typeId()'
collect2: ld devolvió el estado de salida 1
make: *** [Server2] Error 1




... Después de ver lo anterior. ¿Alguien me puede ayudar?







Nota: también lo he probado así:

struct Server: public Application {
        int run(int argc, char* argv[]) {
                shutdownOnInterrupt();
                
                
                
                ObjectAdapterPtr oa = 
communicator()->createObjectAdapter("Vendedor");
                ObjectPrx prx = oa->add(new
Vendedor(),communicator()->stringToIdentity("Vende"));

                Freeze::ConnectionPtr connection =
Freeze::createConnection(communicator(), "db");
                StringIntMap map(connection, "simple");






Saludos.


*****************************************************************
La ciencia es algo más que un conjunto de técnicas, conocimientos,
teoremas, pruebas ..., es una manera de pensar.
Si a las asignaturas de Literatura en la ESI.
_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol


_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol

Responder a