Re: Embeded librairy curses in C with 4Gl program
Posted in 1997
In article <651b92$h7e@cssun.mathcs.emory.edu>, Christian Hernoux <cnhx@polisoft.fr> writes >I have this source sockets.c code : > >void socket_error() >{ > WINDOW *werror; > int car; > > initscr(); > werror = newwin(10,15,5,20); > scrollok(werror,TRUE); > wtimeout(werror,350); > keypad(werror,TRUE); > car = ERR; > while(car == ERR) > { > switch(car=wgetch(werror)) > { > case ERR: > { > wprintw(werror, "TOUCHE"); > break; > } > default : > { > delwin(werror); > endwin(); > } > } > } >} > >int socket_open(nb_arg) >int nb_arg; >{ > char HostName[80]; > int PortNum; > > struct sockaddr_in sa; > struct hostent *hp; > int s; > > if (nb_arg != 2) > fgl_fatal(__FILE__, __LINE__, -1318); > else > { > popint(&PortNum); > popvchar(HostName, sizeof(HostName)); > if ( (hp = gethostbyname(HostName)) == NULL) > socket_error(); > . > . > . > } > > retint(s); > retint(errno); > return(2); > >} > >My Main.4GL code : > >MAIN > DEFINE no_socket INTEGER > DEFINE no_error INTEGER > > CALL socket_open("I016",3000) RETURNING no_socket, no_error >END MAIN > > >I compil with the syntax : > c4gl main.4gl sockets.c -o test.4ge -lsocket -lcurses > >I have the errors : >ld: Symbol wrefresh in /usr/informix/lib/libnforms.a is multiply defined. >First >defined in /usr/lib/libcurses.a >ld: Symbol _endwin in /usr/informix/lib/libnforms.a is multiply defined. >First d >efined in /usr/lib/libcurses.a >ld: Symbol tputs in /usr/informix/lib/libnforms.a is multiply defined. First >def >ined in /usr/lib/libcurses.a >ld: Symbol newwin in /usr/informix/lib/libnforms.a is multiply defined. >First de >fined in /usr/lib/libcurses.a > >If I compil with the syntax : > c4gl main.4gl sockets.c -o test.4ge -lsocket > >No errors with 'ld' but a big core dump when I run test.4ge. > >How can I resolve it ? How may I display a window in C source ? > > >Regards > > You can't, instead call a 4gl function to do it (Informix implements their own version of curses within 4gl). -- David Williams