Link to home
Start Free TrialLog in
Avatar of mrpc_cambodia
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
/* ***************************************************************** */
/*                                                                   */
/* 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);
}

Open in new window

Avatar of lgacs
lgacs
Flag of Hungary image

The line 2287 in include file contains:
 typedef _int64 MQINT64;

Investigate, how your environment defined "_int64" type.
Also check whether the 32 vs 64 bit setting for your compiler is correct ?
Avatar of mrpc_cambodia
mrpc_cambodia

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\DEBUG\MSGEXITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqItm::~ImqItm()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\DEBUG\MSGEXITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqErr::~ImqErr()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\DEBUG\MSGEXITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqObj::name()' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\DEBUG\MSGEXITS.OBJ
[ILINK32 Error] Error: Unresolved external 'ImqMsg::format() const' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\DEBUG\MSGEXITS.OBJ
[ILINK32 Error] Error: Unresolved external 'CSyncTranslator::GetFileName(char * *, char *, long *)' referenced from D:\RAD STUDIO\PROJECTS\MSGEXITS\DEBUG\MSGEXITS.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
ASKER CERTIFIED SOLUTION
Avatar of George Tokas
George Tokas
Flag of Greece image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks, You're right I have to include the header and the lib file to compile successfully.

mrpc_cambodia