免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4916 | 回复: 11

[C++] 一个aix下用xlC编译并调用.so的问题。 [复制链接]

panpass 该用户已被删除
发表于 2009-09-03 17:28 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
panpass 该用户已被删除
发表于 2009-09-03 17:29 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-09-03 17:31 |显示全部楼层

回复 #2 panpass 的帖子

因为C++ 有name mangling机制。

试试:
foo. 随便什么后缀

#ifdef __cplusplus
extern "C"
#endif
void foo_(void)
{
        printf("hello from foo_(),gl_var=[%d]\n",gl_var1);
}

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-09-03 17:36 |显示全部楼层

回复 #3 OwnWaterloo 的帖子

呃, lz还导出了变量……

也可以试试:

foo.xxx

#ifdef __cplusplus
extern "C"
#else
extern
#endif
int gl_var1;


main.xxx

#ifdef __cplusplus
extern "C"
#endif
int gl_var1 = 10;



反正在Windows上这样是不行的……

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
发表于 2009-09-03 18:40 |显示全部楼层
xlC也是可以编译.c的,不一定都是要.cpp

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
发表于 2009-09-03 18:43 |显示全部楼层
另外可以用 extern "C"试试
panpass 该用户已被删除
发表于 2009-09-03 21:52 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
panpass 该用户已被删除
发表于 2009-09-03 21:53 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
发表于 2009-09-03 22:06 |显示全部楼层

回复 #8 panpass 的帖子

我不知道和共享库(so)相关的术语是怎样的, 如果是动态链接库(dll), 尽量不要用dll导出(export )类。

实在要导出, 尽量使用隐式(implicitly)链接。

显式(explicitly)链接到一个dll, 并去找它导出的类, 那是 ……
很不科学的。

[ 本帖最后由 OwnWaterloo 于 2009-9-3 22:07 编辑 ]
panpass 该用户已被删除
发表于 2009-09-04 09:00 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP