Tengo una curiosidad, ¿Qué problema tienes con el Hello World de la asignatura de Arquitectura de Sistemas Distribuidos? https://moodle.uclm.es/file.php/876/Documentos/Software/hello.tgz
Una sugerencia, no uses este ejemplo que nos mandas como un modelo. Es mucho más cómodo y elegante hacer un Ice::Application o un Ice::Service. Ahorras en tiempo de desarrollo y de aprendizaje. La última, usa IceGrid desde ya. Ahorra tiempo y no poco. Mi hello viene con directorio con la configuración de IceGrid. 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: mar 30/10/2007 19:54 Para: [email protected] Asunto: Re: [CRySoL] Makefile vs mi infinita ignorancia Aquí está el maldito hola mundo en C++ paso a paso. Sacado del libro que recomendaba Tobias ice-3.2.0.pdf Crea el fichero Printer.ice y copia esto module Demo { interface Printer { void printString(string s); }; } Compílalo así: $ slice2cpp Printer.ice te genera un Printer.h y un Printer.cpp porque tú lo vales. Crea el fichero Server.cpp y sin miedo escribe lo siguiente: #include <Ice/Ice.h> #include <Printer.h> using namespace std; using namespace Demo; class PrinterI : public Printer { public: virtual void printString(const string& s, const Ice::Current&); }; void PrinterI:: printString(const string& s, const Ice::Current&) { cout << s << endl; } int main(int argc, char* argv[]) { int status = 0; Ice::CommunicatorPtr ic; try { ic = Ice::initialize(argc, argv); //----------------------------Creamos un adaptador de objetos------------------------------------------------ Ice::ObjectAdapterPtr adapter = ic->createObjectAdapterWithEndpoints( "SimplePrinterAdapter", "default -p 10000"); //--------------------------Indicamos al adaptador de objetos la existencia de sirvientes----------------- //el sirviente es el metodo PrinterI, fin del misterio Ice::ObjectPtr object = new PrinterI; adapter->add(object, ic->stringToIdentity("SimplePrinter")); //------------------------Activamos el adaptador de objetos -------------------------------------------------- adapter->activate(); ic->waitForShutdown(); } catch (const Ice::Exception& e) { cerr << e << endl; status = 1; } catch (const char* msg) { cerr << msg << endl; status = 1; } if (ic) { try { ic->destroy(); } catch (const Ice::Exception& e) { cerr << e << endl; status = 1; } } return status; } Lo que significa viene en ice-3.2.0.pdf y si no tienes ni papa de inglés el manual de David Vallejo también lo explica bastante bien. Compila: $ c++ -I. -I$ICE_HOME/include -c Printer.cpp Server.cpp $ c++ -o server Printer.o Server.o \-L$ICE_HOME/lib -lIce -lIceUtil Con esto obtienes un ejecutable llamado server Ahora toca escribir el cliente, crea Client.cpp: #include <Ice/Ice.h> #include <Printer.h> using namespace std; using namespace Demo; int main(int argc, char* argv[]) { int status = 0; Ice::CommunicatorPtr ic; try { ic = Ice::initialize(argc, argv); //Obtenemos el proxy del objeto remoto(esto es conectar con el servidor de antes, ya está) Ice::ObjectPrx base = ic->stringToProxy( "SimplePrinter:default -p 10000"); PrinterPrx printer = PrinterPrx::checkedCast(base); if (!printer) throw "Invalid proxy"; printer->printString("Hello World!"); } catch (const Ice::Exception& ex) { cerr << ex << endl; status = 1; } catch (const char* msg) { cerr << msg << endl; status = 1; } if (ic) ic->destroy(); return status; } Compila: $ c++ -I. -I$ICE_HOME/include -c Printer.cpp Client.cpp $ c++ -o client Printer.o Client.o -L$ICE_HOME/lib -lIce -lIceUtil te crea un ejecutable que se llama client Ahora abre un terminal vete al directorio en cuestión y escribe: ./server Por último abre un terminal vete al directorio en cuestión y escribe: ./client Ale ya tenemos el dichoso hola mundo!!!! Saludos, si tengo tiempo haré una receta formal. ***********************+ "Hay gente pa to y patas", Mi antiguo profesor de geografía. On 10/30/07, Tobias Diaz <[EMAIL PROTECTED]> wrote: El mejor manual: ice-3.2.0.pdf de ZeroC con ejemplos y hola mundos para todos... On Tue, 30 Oct 2007 18:52:32 +0100 "Manuel David Jiménez Patiño" <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > wrote: > Gracias Tobias ya he solucionado el problema, era lo que tú decias. > > He creado un directorio llamado Hola_mundo_C++ > he metido en él los archivos: > > Client.cpp > Server.cpp > Makefile > > y fuera del directorio Hola_mundo_C++ he colocado los archivos: > > config > hello.ice > > lo que pasa es que ahora al hacer: > > $make > > me dice el cachondo: > > g++ -I. -I/usr/include -c -o Server.o Server.cpp > Server.cpp: In member function 'virtual int Server::run(int, char**)': > Server.cpp:17: error: no se puede asignar un objeto de tipo abstracto > 'UCLM::Hello' > hello.h:183: nota: porque las siguientes funciones virtual son puras > en 'UCLM::Hello': > hello.h:196: nota: virtual void UCLM::Hello::puts(const > std::string&, const Ice::Current&) > make: *** [Server.o] Error 1 > > > > No sé que está fallando mi fichero hello.ice es el siguiente: > > module UCLM { > interface Hello { > void puts(string str); > }; > }; > > > De todas formas no me fio mucho de estos archivos el Server.cpp > traía un include helloI.h cuando el makefile genera un hello.h. > > Por lo que voy a probar el hola mundo del manual de David Vallejo. (En > mi modesta opinión creo es un manual bastante completo y viene muy > bien para empezar) > > Saludos. > > > ********************************************************************* > ************** "Un documental ha sido líder de audiencia, se llevan > las gordas y la inteligencia... Ojalá fuera verdad" Mago de Oz > > > > > > > > > > > > On 10/30/07, Tobias Diaz <[EMAIL PROTECTED]> wrote: > > > > Pues resulta que make tiene que usar por algún motivo el archivo de > > configuración (../config), el motivo es que lo tiene en la regla > > para "all": > > all: config patatin ... patatan > > > > y si vemos la regla "config": > > > > config: ../config > > patatin patatan > > > > Pues eso quiere decir que para la regla "config" necesaria para > > "all" necesita el archivo "../config" que: > > - O existe y no lo busca > > - No existe y lo intenta crear, y si no puede: "falta XXX necesario > > para el objetivo XXX" > > > > En resumidas cuentas: create el archivo ../config con la > > configuración necesaria para el ejemplo, si ya hay alguno por ahí, > > ponlo en el directorio padre de donde ejecutes make. > > > > > > On Tue, 30 Oct 2007 17:32:35 +0100 > > "Manuel David Jiménez Patiño" <[EMAIL PROTECTED]> wrote: > > > > > Hola a todos estaba intentado realizar un hola mundo en C++ con > > > el middleware ZeroC Ice. > > > > > > He sacado los archivos de aquí; > > > > > > https://arco.inf-cr.uclm.es/svn/public/prj/ice-hello/ <https://arco.inf-cr.uclm.es/svn/public/prj/ice-hello/> > > > > > > La referencia se encuentra en Crysol: > > > > > > http://crysol.inf-cr.uclm.es/node/619 > > > > > > copio todos los archivos tal y como vienen: > > > > > > EL makefile es el siguiente: > > > > > > > > > > > > > > > > > > GENERATED = hello > > > > > > all: config $(GENERATED).cpp Server Client > > > > > > Server: Server.o $(GENERATED).o $(GENERATED)I.o > > > > > > Server.o: Server.cpp > > > > > > Client: Client.cpp $(GENERATED).o > > > > > > $(GENERATED): $(GENERATED).cpp > > > > > > $(GENERATED).o: $(GENERATED).cpp > > > > > > $(GENERATED).cpp: $(GENERATED).ice > > > slice2cpp $< > > > > > > $(GENERATED).ice: ../$(GENERATED).ice > > > ln -s $< $@ > > > > > > config: ../config > > > ln -s $< $@ > > > > > > clean: > > > $(RM) *.o > > > $(RM) Server Client > > > > > > vclean: clean > > > $(RM) *~ $(GENERATED).cpp $(GENERATED).h > > > $(RM) config *.ice > > > > > > > > > > > > pero al hacer: > > > > > > $make > > > > > > me sale la siguiente lindeza: > > > > > > make: *** No hay ninguna regla para construir el objetivo > > > `../config', necesario para `config'. Alto. > > > > > > > > > > > > estoy buscando en ejemplos por internet y en ejemplos propios de > > > makefilesque yo tenía por ahí, pero todos ellos son demasiado > > > sencillos. > > > > > > ¿Me pueden ayudar?, no obstante seguiré probando y ejecutando. > > > > > > Saludos. > > > > > > ***************************************************************** > > > **** ********************************* > > > De los elementos de la tabla periódica mis favoritos siempre > > > fueron los > > > raros. > > > > _______________________________________________ > > CRySoL mailing list > > http://crysol.inf-cr.uclm.es/ > > https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol <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 <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
