Unresolved functions compiling 4GL and ESQL/C programs
Posted in 1999
Topics: Installation, Setup & Upgrades, Connectivity: ESQL/C, 4GL & Embedded SQL
When compiling a program consists of some 4GL modules and some ESQL/C modules and some C modules I got the following error message at the linking stage. ld: Unresolved: sqli_trans_rollback sqli_curs_decl_dynm sqli_curs_fetch sqli_curs_open sqli_curs_locate sqli_curs_close sqli_curs_free sqli_prep sqli_db_close sqli_exec sqli_trans_begin sqli_trans_commit sqli_db_open sqli_slct sqli_stmt *** Exit 1 Stop. For ESQL/C modules we use 'esql 'e' to preprocess and use 'cc -c' to compile. For 4GL modules we use 'c4gl 'c' to compile. For C modules we use 'cc' to compile. For Linking we use 'c4gl' and pass the object files and our own library as argument. We just upgrade everything including UNIX and INFORMIX for y2k compliancy. Here are the version numbers of new/old platform. New platform: c4gl - 7.20.UD6 esql - 9.20.FC1 Digital UNIX v4.0 Old platform: c4gl - 6.04.UC1 esql ' 7.12.UC1 Digital UNIX v3.2 Any help is appreciated. Thanks in advance. Carl Wu
Carl Wu wrote: > > When compiling a program consists of some 4GL modules and some ESQL/C > modules and some C modules I got the following error message at the linking > stage. [SNIP] > > For ESQL/C modules we use esql e to preprocess and use cc -c to > compile. > For 4GL modules we use c4gl c to compile. > For C modules we use cc to compile. > For Linking we use c4gl and pass the object files and our own library as > argument. Just use c4gl to do ALL compiling and linking! It will handle everything properly if you let it. So for esql modules use c4gl -c. For 4GL modules use c4gl -c. For C modules to be linked with 4GL use c4gl -c. Even for assembler modules (.a) to be linked with 4GL use c4gl -c. Then to link use c4gl -o passing the objects and your libraries. This works best. [SNIP] Art S. Kagel