mrpc_cambodia
asked on
cmqc.h compile errored in CodeGear 2009
Hello,
I use C++ API for Websphere MQ v6 to manipulate message in a queue. I have included all the necessary header files in my C++ project. I use CodeGear 2009 C++ builder as my development IDE.
below are the error messages i received when the code is compiled:
[BCC32 Error] cmqc.h(2287): E2257 , expected
[BCC32 Error] cmqc.h(2288): E2238 Multiple declaration for '_int64'
[BCC32 Error] cmqc.h(2287): E2344 Earlier declaration of '_int64'
[BCC32 Error] cmqc.h(2288): E2257 , expected
[BCC32 Error] cmqc.h(2294): E2257 , expected
[BCC32 Error] cmqc.h(2295): E2257 , expected
[BCC32 Error] cmqc.h(2301): E2257 , expected
[BCC32 Error] cmqc.h(2302): E2257 , expected
Kindly give me some hints of what cause the problem.
Thanks,
mrpc_cambodia
I use C++ API for Websphere MQ v6 to manipulate message in a queue. I have included all the necessary header files in my C++ project. I use CodeGear 2009 C++ builder as my development IDE.
below are the error messages i received when the code is compiled:
[BCC32 Error] cmqc.h(2287): E2257 , expected
[BCC32 Error] cmqc.h(2288): E2238 Multiple declaration for '_int64'
[BCC32 Error] cmqc.h(2287): E2344 Earlier declaration of '_int64'
[BCC32 Error] cmqc.h(2288): E2257 , expected
[BCC32 Error] cmqc.h(2294): E2257 , expected
[BCC32 Error] cmqc.h(2295): E2257 , expected
[BCC32 Error] cmqc.h(2301): E2257 , expected
[BCC32 Error] cmqc.h(2302): E2257 , expected
Kindly give me some hints of what cause the problem.
Thanks,
mrpc_cambodia
/* ***************************************************************** */
/* */
/* Module Name: msgExits.cpp */
/* */
/* Descriptive Name: WDI Adapter / WDI Server sample exits */
/* */
/* Release Level: Version 3, Release 2, Modification Level 1 */
/* */
/* Licensed Materials - */
/* Property of IBM 5655-G99 (c) Copyright IBM Corp. 1989, 2006 */
/* */
/* Function: Illustrates the function signature for the Adapter API */
/* Change Activity: */
/* Date PTR/DCR# Name/ID Description */
/* ======== ========== ======== =====================================*/
/* 02/28/05 P8010301 lwhitak Create module */
/* ======== ========== ======== =====================================*/
#include <stdio.h>
#include <string.h>
#include "imqi.hpp" /* WMQ definitions in Cpp */
#include "diapi.h" /* WDI interface objects */
#include "msgExits.h" /* WDIAdapter constants and protptypes */
/* ***************************************************************** */
/* ***************************************************************** */
extern "C" __declspec(dllexport) BOOL msgTrigger(const MQTMC2 *triggerMsg, void *pvExitContext)
{
ImqQueueManager *QM = (ImqQueueManager*)pvExitContext;
printf("Executing exit msgTrigger. Queue Manager:%s\n",
(char*)QM->name());
fflush(stdout);
return(FALSE); /* do not terminate */
}
/* ***************************************************************** */
/* ***************************************************************** */
extern "C" __declspec(dllexport) BOOL msgArrival(void *pvExitContext, char *sessionID)
{
ImqMessage *imsgIn = (ImqMessage *)pvExitContext;
printf("Executing exit msgArrival. Message forrmat: %s\n",
(char*)imsgIn->format());
fflush(stdout);
return(FALSE); /* do not terminate */
}
/* ***************************************************************** */
/* ***************************************************************** */
extern "C" __declspec(dllexport) int msgTransform(void *pvExitContext, long rc, long ccbrc, long ccberc)
{
CSyncTranslator *cTr = (CSyncTranslator*)pvExitContext;
char *pcPrtfile;
long lCharcnt;
cTr->GetFileName(&pcPrtfile, "PRTFILE", &lCharcnt);
printf("Executing exit msgTransform. RC: %d ERC:%d\n", ccbrc, ccberc);
printf("\t%ld characters written to print file (%s)\n",
lCharcnt, pcPrtfile);
fflush(stdout);
if (ccbrc > 8 || (ccbrc == 8 && ccberc > 12)) {
/* rollback resources and process next message */
return(CONTINUE);
}
else {
/* commit all work for any condition code 8 or less */
return(SYNC_CONTINUE);
}
}
/* ***************************************************************** */
/* ***************************************************************** */
extern "C" __declspec(dllexport) BOOL msgTerminate(void *pvExitContext)
{
printf("Executing exit msgTerminate.\n");
fflush(stdout);
return(TRUE);
}
ASKER
This problem is resolved once i change from _int64 to __int64.
but now i run into another problem:
[ILINK32 Error] Error: Unresolved external 'ImqStr::~ImqStr()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqItm::~ImqItm()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqErr::~ImqErr()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqObj::name()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqMsg::format() const' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
[ILINK32 Error] Error: Unresolved external 'CSyncTranslator::GetFileN ame(char * *, char *, long *)' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D EBUG\MSGEX ITS.OBJ
I know it need to configure my ide to reference a library somewhere. but i dont what library do i need to fix this error?
Thanks,
mrpc_cambodia
but now i run into another problem:
[ILINK32 Error] Error: Unresolved external 'ImqStr::~ImqStr()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D
[ILINK32 Error] Error: Unresolved external 'ImqItm::~ImqItm()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D
[ILINK32 Error] Error: Unresolved external 'ImqErr::~ImqErr()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D
[ILINK32 Error] Error: Unresolved external 'ImqObj::name()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D
[ILINK32 Error] Error: Unresolved external 'ImqMsg::format() const' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\D
[ILINK32 Error] Error: Unresolved external 'CSyncTranslator::GetFileN
I know it need to configure my ide to reference a library somewhere. but i dont what library do i need to fix this error?
Thanks,
mrpc_cambodia
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks, You're right I have to include the header and the lib file to compile successfully.
mrpc_cambodia
mrpc_cambodia
typedef _int64 MQINT64;
Investigate, how your environment defined "_int64" type.
Also check whether the 32 vs 64 bit setting for your compiler is correct ?