- Community Home
- >
- Servers and Operating Systems
- >
- Operating Systems
- >
- Operating System - OpenVMS
- >
- Re: porting alpha to integrity
Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 12:36 AM
тАО05-21-2011 12:36 AM
I am porting an application from alpha to integrity. I came to the point where one of the source files is not getting compiled. The error message says:
%CXX-E-NOTCOMPREDEC, declaration is incompatible with
"int (*l2func)(MBXDESC *, AKMESSINFO *) C" (declared at line 155 of
"LV2$SERVER:[SOURCE]LV2.H;13")
at line number 60 in file LV2$SERVER:[SOURCE]LV2.C;19
in LV2.c i have:
int (*l2func)(MBXDESC *mbxd, AKMESSINFO *akmess);
in lv2.h i have:
extern int (*l2func) (MBXDESC *mbxd, AKMESSINFO *akmess);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 01:37 AM
тАО05-21-2011 01:37 AM
Re: porting alpha to integrity
<<<
There seems to be more than just the shown line from your .h file: the appended 'C' in the message is very likely caused by an `extern "C" { ... }' in your .h file and the declaration of l2func being in the curly brackets.
I doubt that the compiler diagnostic is different on Alpha and Integrity. /SHOW=ALL/LIST may help to find out whether there is an `extern "C"' in effect and what's different on both platforms.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 01:57 AM
тАО05-21-2011 01:57 AM
Re: porting alpha to integrity
Indeed i have extern c in my .h file and the the decalration is in the bracket of extern c.
what i have in the files is:
in LV2.c i have:
int (*l2func)(MBXDESC *mbxd, AKMESSINFO *akmess);
in lv2.h i have:
extern int (*l2func) (MBXDESC *mbxd, AKMESSINFO *akmess);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 06:33 AM
тАО05-21-2011 06:33 AM
Re: porting alpha to integrity
cxx /version
> [...] one of the source files [...]
If you supplied an actual test case instead
of a vague description, then someone else
might be able to investigate this.
> what i have in the files is:
> in LV2.c i have:
> int (*l2func)(MBXDESC *mbxd, AKMESSINFO *akmess);
> in lv2.h i have:
> extern int (*l2func) (MBXDESC *mbxd, AKMESSINFO *akmess);
Ok. And are these on the lines cited in the
error message? Do we know anything about
what MBXDESC and AKMESSINFO are in both
places?
> /SHOW=ALL/LIST
Often a good place to start.
One common problem with old code which
started on VAX is conditionality like
#ifdef __alpha
instead of
#ifndef __VAX
One of these usually works better than the
other on an IA64 system. But, with my weak
psychic powers, I can't see enough of your
code to do more than guess at what's
happening with it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 08:18 AM
тАО05-21-2011 08:18 AM
Re: porting alpha to integrity
Sometimes defaults are different on Itanium.
You may find the extern model is different on Itanium.
Purely Personal Opinion
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 10:23 AM
тАО05-21-2011 10:23 AM
Solution$ cxx/vers
HP C++ V7.2-021 on OpenVMS IA64 V8.4
$ cxx/noobj tt:
extern "C" int (*f)(int);
extern int (*f)(int);
extern int (*f)(int);
.............^
%CXX-E-NOTCOMPREDEC, declaration is incompatible with "int (*f)(int) C"
(declared at line 1)
at line number 2 in file TT:[].CXX;
Exit
Exit
%CXX-I-MESSAGE, 1 error detected in the compilation of "TT:[].CXX;".
$
$ cxx/ver
HP C++ V7.1-015 for OpenVMS Alpha V8.3
$ cxx/noobj tt:
extern "C" int (*f)(int);
extern int (*f)(int);
extern int (*f)(int);
.............^
%CXX-E-NOTCOMPREDEC, declaration is incompatible with "int (*f)(int) C"
(declared at line 1)
at line number 2 in file _VTA2562:[].CXX;
Exit
%CXX-I-MESSAGE, 1 error detected in the compilation of "_VTA2562:[].CXX;".
$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-21-2011 10:09 PM
тАО05-21-2011 10:09 PM
Re: porting alpha to integrity
Thank you for your effort. I've uploaded the source for your reference. I have compiled on alpha successfully.
Thank You.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-22-2011 04:33 AM
тАО05-22-2011 04:33 AM
Re: porting alpha to integrity
What are the compiler versions and the used compiler switches?
If you want someone to compile your sources, make sure that you provide all include files. There is an easy way to ensure none is forgotten: use the /preprocess qualifier.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-22-2011 04:49 AM
тАО05-22-2011 04:49 AM
Re: porting alpha to integrity
I did notice one obvious difference between what the compiler will see on Alpha and Itanium. You've got the following lines in lv2.h:
#ifdef __ia64
#pragma member_alignment __save
#pragma nomember_alignment
#endif
If you didn't need that on Alpha, it seems unlikely you'd need it on Itanium (though I guess it's possible), and the penalty for turning off alignment would be worse.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО05-22-2011 05:53 AM
тАО05-22-2011 05:53 AM
Re: porting alpha to integrity
Any reason you don't just add extern "C" to the one in LV2.c? Or better yet, remove the redundant declaration in LV2.c.