hi,
For requirement,I write a jbase subroutine and two C program. They
are named VCHKXVERIFYPAYPWD.b, CTest.c and Simple.c . Their Logics are
that VCHKXVERIFYPAYPWD.b call CTest.c and CTest.c call Simple.c .
I use ksh script complie and link those .b and .c program. Ksh script
runs successfully.
After running ksh script, I use a jbase program 'TESTCHK' call
subroutine VCHKXVERIFYPAYPWD and error messge is thrown as the
following:
jBASE: /app/t24core/bnk/bnk.run/xllib/libdraft.so: rtld: 0712-001
Symbol STORE_BBS was referenced
from module /app/t24core/bnk/bnk.run/xllib/libcipher.a(), but a
runtime definition
of the symbol was not found.
rtld: 0712-002 fatal error: exiting.
** Error [ SUBROUTINE_CALL_FAIL ] **
Unable to perform CALL to subroutine VCHKXVERIFYPAYPWD , Line 3 ,
Source TESTCHK
Press C to continue or Q to quit
Trap from an error message, error message name = SUBROUTINE_CALL_FAIL
Source changed to .//TESTCHK
I'm troubled in this problem for three days. I try to solve this
problem,but it still is a puzzle. I think that maybe my ksh script is
incorrect or enviroment config configuration need be change. I expect
to obtain your help.
My operator system is AIX 6.1.
*************************************************************************************************
ksh script Build6.ksh
cc -q64 -c Simple.c
jcompile -c CTest.c
xlc -G -q64 -qmkshrobj -o $JBCDEV_LIB/libshr1.so simple.o ctest.o
export LIBPATH=$PWD:$LIBPATH
export LD_LIBRARY_PATH=$PWD:$LD_LIBRARY_PATH
export SHLIB_PATH=$PWD:$SHLIB_PATH
jcompile -Qs $JBCDEV_LIB/libdraft.sl -L. -lshr1 VCHKXVERIFYPAYPWD.b
=========================================================
VCHKXVERIFYPAYPWD.b
SUBROUTINE VCHKXVERIFYPAYPWD
DEFC INT ABC(VAR,VAR)
RETURN.CODE = -1
R.ERROR.MSG = ''
P1 = "hi test test"
RETURN.CODE = ABC(P1, R.ERROR.MSG)
CRT "RTN.MSG=" :R.ERROR.MSG
CRT "RETURN.CODE=" : RETURN.CODE
RETURN
END
==========================================================
CTest.c
#include <jsystem.h>
#include <assert.h>
#include "stdhead.h"
#include "simple.h"
#define HOME "HOME"
#ifdef DPSTRUCT_DEF
#define JBASEDP DPSTRUCT *dp,
#else
#define JBASEDP
#endif
INT32 ABC(JBASEDP VAR *param1, VAR *Result)
{
INT32 ret;
char *ptrParam1, *ptrResult;
char aResult[11];
ptrParam1 = (char *)CONV_SFB(param1);
ptrResult = (char *)CONV_SFB(Result);
ret = VerifyPayCodeAAA(ptrParam1, ptrResult);
STORE_BBS(Result, ptrResult);
return ret;
}
========================================================
source Simple.c
#include "simple.h"
int VerifyPayCodeAAA(unsigned char* pClientPkg,unsigned char*
strErrmsg) {
char *prtErrmsg;
memcpy(strErrmsg, "hello, this is test", 30);
STORE_BBS(strErrmsg, prtErrmsg);
return 0;
}
=========================================================
source simple.h
int VerifyPayCodeAAA(unsigned char* pClientPkg,unsigned char*
strErrmsg);
==========================================================
source stdhead.h
#ifndef _STDHEAD_H_MYCM_DDM_19991014_
#define _STDHEAD_H_MYCM_DDM_19991014_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
#include <time.h>
//#include <bool.h>
#include <errno.h>
#include <time.h>
#include <signal.h>
#include <unistd.h>
#include <termio.h>
#include <fcntl.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <sys/sem.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#ifndef BYTE
typedef unsigned char BYTE;
#endif
#ifndef BOOL
typedef unsigned char BOOL;
#endif
typedef int SOCKET;
typedef unsigned int UINT;
typedef unsigned char UCHAR;
typedef unsigned short WORD;
#endif
--
--
IMPORTANT: T24/Globus posts are no longer accepted on this forum.
To post, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/jBASE?hl=en