Chinaunix

标题: C调用C++ [打印本页]

作者: yuanchengjun    时间: 2007-04-29 11:35
标题: C调用C++
去年琢磨很长时间,贴出来共享。
依次执行:
make
make test
test

[ 本帖最后由 yuanchengjun 于 2007-4-29 13:15 编辑 ]

CALLCPP.zip

154.03 KB, 下载次数: 764

源文件及程序


作者: yuanchengjun    时间: 2007-04-29 15:35
自己顶一下。
我相信还是有一部分人看不懂的。
作者: yuanchengjun    时间: 2007-04-30 13:34
顶!顶!顶!
谁明白了?解释一下。
作者: cjaizss    时间: 2007-11-03 10:57
C++要给C调用的外部接口可以加上extern "C",这样编译的时候符号名就不会变。偶昨天晚上那么整,纯属吃饱了撑的,瞎胡闹,hoho
作者: zhujiang73    时间: 2007-11-03 16:10
标题: 回复 #1 yuanchengjun 的帖子
感觉需要用 C 调用 C++ 的情况不多,需要用 C++ 调用 C 的情况很多。不过动态加载 C++ 共享库时需要用 C 风格的 Factory Method ,不然 dlsym 不能工作。
作者: yuanchengjun    时间: 2007-11-03 23:34
这里,C把C++的虚函数表做出来了,没做夹层,直接调用对象的方法。
不过一般情况下别用,因为和C++编译器实现相关了,虽然大多编译器支持,但C++标准应该没有规定C++编译器必须这么实现的。
这份实现,也可以直接用一定规则的C++类来调用,没什么说的,因为本来就是C++类写的。

平时调用,额外注意:
符号名称要一致,
如果windows还要注意调用方式,__stdcall ??
C++导出符号时,没有固定的标准!各家编译器会不一样的。一般会用C方式导出,不过没有函数重载等效果了。

[ 本帖最后由 yuanchengjun 于 2007-11-3 23:38 编辑 ]
作者: zft19    时间: 2008-11-21 11:04
你对虚函数表理解的还是挺清楚的




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2