Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Function Declaration and Definition

Status
Not open for further replies.

programmer400

Programmer
Nov 8, 2006
17
IN
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_num = 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,(char*)search_params->prod_sub_type.c_str());
strcpy((char*)wf_struct_search_d.opn_type,(char*)search_params->opn_type.c_str());
strcpy((char*)wf_struct_search_d.customer_num,(char*)search_params->customer_num.c_str());
strcpy((char*)wf_struct_search_d.bene_base_num,(char*)search_params->bene_base_num.c_str());
strcpy((char*)wf_struct_search_d.customer_ref_num,(char*)search_params->customer_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(ptrlistWU->lst_Workunit_fe));
}
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
Ronan
 
Code:
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);
You're calling WF_ListWuClnt with 8 parameters, but according do your definition, it only takes 7 parameters.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top