happer_xc 发表于 2004-11-03 09:38

在64位机器上编译ec程序遇到问题

一个简单的程序,在32位机器上编译没遇到问题,移植到64位机器上后编译提示很多错误。哪位大侠有过这样的经历,帮忙解释一下,不胜感激。

#include <stdio.h>;

EXEC SQL include sqlca ;

main()
{
EXEC SQL BEGIN DECLARE SECTION ;
       char    dbname ;
       int   a ;
EXEC SQLENDDECLARE SECTION ;
       strcpy( dbname, (char *)getenv("DBNAME") ) ;
       EXEC SQL DATABASE :dbname ;

       EXEC SQL SELECT a INTO :a FROM tab1 WHERE b=1 ;

       EXEC SQL CLOSE DATABASE ;
       exit(0) ;
}

编译信息:
esql -o a a.ec
"a.ec", line 11.33: 1506-304 (W) No function prototype given for "getenv".
"a.ec", line 11.9: 1506-304 (W) No function prototype given for "strcpy".
"a.ec", line 11.25: 1506-745 (I) 64-bit portability: possible incorrect pointer through conversion o
f int type into pointer.
"a.ec", line 14.25: 1506-495 (I) Pointer type conversion found.
"a.ec", line 14.25: 1506-374 (I) Pointer types "char*" and "int*" are not compatible.
"a.ec", line 17.9: 1506-304 (W) No function prototype given for "exit".

yyiiasc 发表于 2004-11-03 09:50

在64位机器上编译ec程序遇到问题

cc 编译参数加-m64

happer_xc 发表于 2004-11-03 12:02

在64位机器上编译ec程序遇到问题

包含的头文件要有stdlib.hstrings.h
a 必须定义成char型
是不是9。4不支持long \ int 型类型

yyiiasc 发表于 2004-11-03 12:23

在64位机器上编译ec程序遇到问题

嗯你程序中用到某些系统涵数调用的话需要加上相应的头文件的
同过man 涵数名可以找到相应的头文件
应该支持long\int

koeileon 发表于 2007-06-27 14:29

这个问题解决了吗?我也遇到同样的问题

xrdsheng1 发表于 2007-07-26 16:26

也许要装上64位的IDS

ivhb 发表于 2007-07-26 17:24

哥们,人家可是04年的求助帖子啊。
说不定,早就不在这个圈子混,过上幸福的日子了

fush76 发表于 2007-07-28 12:02

esql -Ae -c -s

esql -Ae -c -s chknmend.ec

试试.

不过最主要的还是要看你的 esql 版本,esql -V 看一看.

ivhb 发表于 2007-07-30 14:25

esql基本上就是一个shell,支持的选项大部分实际上就是cc/xlc等的选项。考虑到各个系统的cc选项千差万别。因此-V选项的,并不能揭示什么。楼上的是HP-UX的esql?

fush76 发表于 2007-08-01 19:34

TO ivhb :
我是AIX 版的esql .

你说的很对,主要是CC编译工具,
页: [1]
查看完整版本: 在64位机器上编译ec程序遇到问题