Hi,
I'm trying to compile a dll using Visual C++ 6.0, with references to a
Visual Basic 6.0 ActiveX dll.
Here is the code
#include "cbridge.h"
#include "AstraExt.h"
extern /*[[integer out]]*/ BOOL __declspec(dllexport) Initialise
();
int __declspec(dllexport) __cdecl
RMDLLInitialise
(
char *_rmdll_Name,
short _rmdll_ArgCount,
ARGUMENT_ENTRY _rmdll_Args[],
short _rmdll_State,
HWND _rmdll_hCobolWnd,
RUNTIME_CALLS_TABLE *_rmdll_RtCall
)
{
BOOL __RETURN__Initialise; BOOL *__ptr____RETURN__Initialise =
&__RETURN__Initialise;
CONV_TABLE *_rmdll_ConvTable;
if( !_rmdll_RtCall->pConversionStartup( _rmdll_ArgCount,
&_rmdll_ConvTable, _rmdll_Name, 0x700 ) )
return( RM_STOP );
if
(!_rmdll_RtCall->pCobolToInteger
( _rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_RETURN_VALUE),
(0),
(0),
(void **) &__ptr____RETURN__Initialise,
(0),
(0),
sizeof( __RETURN__Initialise )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
__RETURN__Initialise =
Initialise
();
if
(
!_rmdll_RtCall->pIntegerToCobol
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_OUT | PF_RETURN_VALUE),
(0),
(void *) __ptr____RETURN__Initialise,
(0),
(0),
sizeof( __RETURN__Initialise )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount, _rmdll_ConvTable );
return( RM_FND );
Quote:
}
extern /*[[integer out]]*/ BOOL __declspec(dllexport) __OpenFile
(
/*[[address]]*/ LPCTSTR FileName
);
int __declspec(dllexport) __cdecl
RMDLL__OpenFile
(
char *_rmdll_Name,
short _rmdll_ArgCount,
ARGUMENT_ENTRY _rmdll_Args[],
short _rmdll_State,
HWND _rmdll_hCobolWnd,
RUNTIME_CALLS_TABLE *_rmdll_RtCall
)
{
BOOL __RETURN____OpenFile; BOOL *__ptr____RETURN____OpenFile =
&__RETURN____OpenFile;
LPCTSTR FileName;
CONV_TABLE *_rmdll_ConvTable;
if( !_rmdll_RtCall->pConversionStartup( _rmdll_ArgCount,
&_rmdll_ConvTable, _rmdll_Name, 0x700 ) )
return( RM_STOP );
if
(
!_rmdll_RtCall->pCobolToInteger
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_RETURN_VALUE),
(0),
(0),
(void **) &__ptr____RETURN____OpenFile,
(0),
(0),
sizeof( __RETURN____OpenFile )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
if
(
!_rmdll_RtCall->pCobolDescriptorAddress
(
_rmdll_ArgCount,
0,
_rmdll_Args,
(0),
(void **) &FileName
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
__RETURN____OpenFile =
__OpenFile
(
FileName
);
if
(
!_rmdll_RtCall->pIntegerToCobol
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_OUT | PF_RETURN_VALUE),
(0),
(void *) __ptr____RETURN____OpenFile,
(0),
(0),
sizeof( __RETURN____OpenFile )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount, _rmdll_ConvTable );
return( RM_FND );
Quote:
}
extern /*[[integer out]]*/ BOOL __declspec(dllexport) __CloseFile
(
);
int __declspec(dllexport) __cdecl
RMDLL__CloseFile
(
char *_rmdll_Name,
short _rmdll_ArgCount,
ARGUMENT_ENTRY _rmdll_Args[],
short _rmdll_State,
HWND _rmdll_hCobolWnd,
RUNTIME_CALLS_TABLE *_rmdll_RtCall
)
{
BOOL __RETURN____CloseFile; BOOL *__ptr____RETURN____CloseFile =
&__RETURN____CloseFile;
CONV_TABLE *_rmdll_ConvTable;
if( !_rmdll_RtCall->pConversionStartup( _rmdll_ArgCount,
&_rmdll_ConvTable, _rmdll_Name, 0x700 ) )
return( RM_STOP );
if
(
!_rmdll_RtCall->pCobolToInteger
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_RETURN_VALUE),
(0),
(0),
(void **) &__ptr____RETURN____CloseFile,
(0),
(0),
sizeof( __RETURN____CloseFile )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
__RETURN____CloseFile =
__CloseFile
(
);
if
(
!_rmdll_RtCall->pIntegerToCobol
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_OUT | PF_RETURN_VALUE),
(0),
(void *) __ptr____RETURN____CloseFile,
(0),
(0),
sizeof( __RETURN____CloseFile )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount, _rmdll_ConvTable );
return( RM_FND );
Quote:
}
extern /*[[integer out]]*/ BOOL __declspec(dllexport) DeInitialise
(
);
int __declspec(dllexport) __cdecl
RMDLLDeInitialise
(
char *_rmdll_Name,
short _rmdll_ArgCount,
ARGUMENT_ENTRY _rmdll_Args[],
short _rmdll_State,
HWND _rmdll_hCobolWnd,
RUNTIME_CALLS_TABLE *_rmdll_RtCall
)
{
BOOL __RETURN__DeInitialise; BOOL *__ptr____RETURN__DeInitialise =
&__RETURN__DeInitialise;
CONV_TABLE *_rmdll_ConvTable;
if( !_rmdll_RtCall->pConversionStartup( _rmdll_ArgCount,
&_rmdll_ConvTable, _rmdll_Name, 0x700 ) )
return( RM_STOP );
if
(
!_rmdll_RtCall->pCobolToInteger
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_RETURN_VALUE),
(0),
(0),
(void **) &__ptr____RETURN__DeInitialise,
(0),
(0),
sizeof( __RETURN__DeInitialise )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
__RETURN__DeInitialise =
DeInitialise
(
);
if
(
!_rmdll_RtCall->pIntegerToCobol
(
_rmdll_ArgCount,
-1,
_rmdll_Args,
(0 | PF_OUT | PF_RETURN_VALUE),
(0),
(void *) __ptr____RETURN__DeInitialise,
(0),
(0),
sizeof( __RETURN__DeInitialise )
)
)
{
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount,
_rmdll_ConvTable );
return( RM_STOP );
}
_rmdll_RtCall->pConversionCleanup( _rmdll_ArgCount, _rmdll_ConvTable );
return( RM_FND );
Quote:
}
This is the AstraExt.h
#ifdef __cplusplus
extern "C"
#endif
BOOL __declspec(dllexport) Initialise();
BOOL __declspec(dllexport) __OpenFile(LPCTSTR);
BOOL __declspec(dllexport) __CloseFile();
BOOL __declspec(dllexport) DeInitialise();
and here are the linking erorrs i'm am currently getting
AstraExt.obj : error LNK2001: unresolved external symbol
AstraExt.obj : error LNK2001: unresolved external symbol
AstraExt.obj : error LNK2001: unresolved external symbol
AstraExt.obj : error LNK2001: unresolved external symbol
Debug/test.dll : fatal error LNK1120: 4 unresolved externals
Can anyone help in fixing these errors, I have searched the newsgroups and
found postings on similar topics but the answers do not solve my problem.
TIA
Andy