This is a discussion on ld: Unsatisfied symbol "WF_ListWuClnt" in file WFWuListService.o within the HP-UX Operating System forums, part of the Unix Operating Systems category; --> Dear Friends I am giving the following command to build the server executableon HP-UX /opt/aCC/bin/aCC -o SOAPServer SOAPServer.o WFWuListService.o ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| Dear Friends I am giving the following command to build the server executableon HP-UX /opt/aCC/bin/aCC -o SOAPServer SOAPServer.o WFWuListService.o WFWuListImpl.o WFWuListStructs.o WFWuList.o -I/opt/systinet/server_cpp65/include/ -I../.. +DD64 /opt/systinet/server_cpp65/lib/libwasp.sl /opt/systinet/server_cpp65/lib/libwasp_stl.sl -ldcekt -lpthread and Im getting the following error ld: Unsatisfied symbol "WF_ListWuClnt" in file WFWuListService.o 1 errors. Which means WFWuListService.cpp, especially the spelling and definition of WF_ListWuClnt needs to be checked . My header file WFWuMYList1.h has the prototype declaration of WF_ListWuClnt function which is long WF_ListWuClnt ( unsigned char *process_id, unsigned char *process_step_id, unsigned char *cluster_id, WF_STRUCT_SEARCH *search_params, char incl_active_wu, int nbr_requested, WF_LIST_WORKUNIT_P_FE *workunit_array ); and in WFWuListService.cpp I have ---------------------------------------------------------------------------*--------------------------------------------------------------- #include <stdlib.h> #include <string.h> #include <stdio.h> #include <sys/time.h> #include "WFWuListService.h" // WFWuList Systinet service declarations #include "WFWuMYList1.h" WFWuStructFe WFWuStructDceToSoap(WF_STRUCT_WORKUNIT_FE dceStruct) { // define WFWuStructFe WFWuStructFe wuStructFe; WFWuHandle wuHandle; wuHandle->workunit_id = 5; wuHandle->workunit_seq = 10; wuHandle->updateSerial_num = 12; wuStructFe->wf_workunit_handle = wuHandle; wuStructFe->ap_batch_id = "12"; wuStructFe->ap_bene_base_num = "12"; wuStructFe->ap_customer_name = "Amit" ; wuStructFe->ap_customer_num = "0400034"; return wuStructFe; } ArrayOfWFWuStructFe WFWuListService::WfListWuClnt(::WFWuHandle & handle, const WASP_STD_NS::string & process_id, const WASP_STD_NS::string & process_step_id, const WASP_STD_NS::string & cluster_id, ::WFStructSearch & search_params, const WASP_STD_NS::string & incl_active_wu, int nbr_requested) { // Array of workunit structures to return ArrayOfWFWuStructFe wuList; // time structures to capture the lapsed time for RPC call struct timeval first, second, lapsed; struct timezone tzp; long tResult = 0; char process_id_[7]; char process_step_id_[7]; char cluster_id_[4]; char incl_active_wu_ = 'Y' ; int nbr_requested_; strcpy((char*)process_id_, (char*)process_id.c_str() ); process_id_[6]='\0'; strcpy((char*)process_step_id_, (char*)process_step_id.c_str()); process_step_id_[6]='\0'; strcpy((char*)cluster_id_, (char*)cluster_id.c_str()); cluster_id_[3]='\0'; nbr_requested_ = nbr_requested; WF_STRUCT_SEARCH wf_struct_search_d ; memset((void*)&wf_struct_search_d, '\0', sizeof(WF_STRUCT_SEARCH)); //***** Populate the WF_STRUCT_SEARCH ****** wf_struct_search_d.workunit_handle.workunit_id = search_params->workunit_handle->workunit_id; wf_struct_search_d.workunit_handle.workunit_seq = search_params->workunit_handle->workunit_seq; wf_struct_search_d.workunit_handle.update_serial_n um = search_params->workunit_handle->updateSerial_num; strcpy((char*)wf_struct_search_d.prod_type,(char*) search_params->prod_type.*c_str()); strcpy((char*)wf_struct_search_d.prod_sub_type,(ch ar*)search_params->prod_s*ub_type.c_str()); strcpy((char*)wf_struct_search_d.opn_type,(char*)s earch_params->opn_type.c_*str()); strcpy((char*)wf_struct_search_d.customer_num,(cha r*)search_params->custome*r_num.c_str()); strcpy((char*)wf_struct_search_d.bene_base_num,(ch ar*)search_params->bene_b*ase_num.c_str()); strcpy((char*)wf_struct_search_d.customer_ref_num, (char*)search_params->cus*tomer_ref_num.c_str()); WF_STRUCT_WORKUNIT_FE *pWufe = NULL; WF_LIST_WORKUNIT_FE listWU; memset((void*)&listWU, '\0' , sizeof(WF_LIST_WORKUNIT_FE)); WF_LIST_WORKUNIT_P_FE ptrlistWU ; ptrlistWU = &listWU; gettimeofday(&first, &tzp); tResult = WF_ListWuClnt( wfm_binding_h, (unsigned char*) (const char*) process_id_, (unsigned char*) (const char*) process_step_id_, (unsigned char*) (const char*) cluster_id_, &wf_struct_search_d, incl_active_wu_, nbr_requested_, &ptrlistWU); gettimeofday(&second, &tzp); if (first.tv_usec > second.tv_usec) { second.tv_usec += 1000000; second.tv_sec--; } lapsed.tv_usec = second.tv_usec - first.tv_usec; lapsed.tv_sec = second.tv_sec - first.tv_sec; // cout << "Lapsed time for DCE RPC call = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl; int i = 0; for (i = 0; i < ptrlistWU->nbr_Workunits_fe; i++) { wuList->wFWuStructFe.push_back(WFWuStructDceToSoap(ptrlis tWU->lst_Workunit_*fe[i])); } free(ptrlistWU); cout << "WFWuListService: Number of records = " << wuList->wFWuStructFe.size() << ", lapsed time = " << lapsed.tv_sec*1000 + lapsed.tv_usec/1000 << " msec." << endl; return wuList; } } ---------------------------------------------------------------------------*--------------------------------------------------------------- Am Missing something yet Thanks Amit |