如何在C函数中调用C++函数(gcc/g++)?
请问有谁试过在C函数中调用C++函数吗?我用的是unix平台上gcc/g++编译器。
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]
问题点数:100、回复次数:8Top
1 楼strongld(林冲)回复于 2002-10-16 10:54:55 得分 0
包函了c++的头文件和其库文件的话应该可以的吧!Top
2 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2002-10-16 10:55:11 得分 0
你是用c++的函数,就需要用c++编译器,那么你的所谓c语言也就成为了c++,不知道你到底要做什么,怎么使用??
Top
3 楼findmylover(和楼主一起去裸奔)回复于 2002-10-16 11:02:23 得分 0
就是啊!Top
4 楼shspwjh(等待)回复于 2002-10-16 11:15:36 得分 0
我也有同样的问题,现在正准备测试,有人用过吗?
能不能成功,怎么使用的?Top
5 楼Robin_Hood_POT(令狐冲)回复于 2002-10-16 11:19:19 得分 0
如果函数调用方式一样(如stdcall、fastcall……),而且你调用的C++函数是全局函数,那么应该可以直接调用!
如果C++函数是某个类的成员函数,那么对不起,因为非静态成员函数都有一个隐含参数this,所以你的C编译器无法处理!Top
6 楼galfordck()回复于 2002-10-16 13:11:01 得分 0
对不起,我没把问题说清楚。是这样的,我们正在搞一系统(UINX上用C或C++),老板要求做到在不重启程序的情况下可动态增加或减少业务处理,这就要使用动态链接库。将业务处理函数都写到库里,在程序中使用dlopen()、dlsym()等函数动态调用。但问题是该种方法只支持用C函数,对于C++,由于支持函数重载,在函数库中会将函数名改变,造成dlsym不能正常使用。本来完全用C写也可以,但为了能使用STL减少工作量,还是希望用C++。我的设想是业务处理函数用C++写,再用一C函数进行封装,便可进行调用。不知各位大哥大姐是否有其他高见?不胜感激。
Top
7 楼alexxing(赤铸)回复于 2002-10-16 13:44:37 得分 0
在你的 C++ 模块中用 C 函数封装 C++ 函数:
extern "C" {
XXX C_func(...);
XXX C_func(...)
{
return CPP_func(...);
}
}
Top
8 楼alexxing(赤铸)回复于 2002-10-16 13:48:52 得分 100
在你的 C++ 模块中用 extern "C" 函数封装 C++ 函数:
extern "C" {
XXX C_func(...);
}
XXX C_func(...)
{
return CPP_func(...);
}
Top
9 楼galfordck()回复于 2002-10-16 15:05:07 得分 0
to alexxing(赤铸):
不行啊,虽然C++函数可以运行,但是用dlclose()关闭打开的动态库时,显示
dynamic linker: test: symbol not found: _IO_cleanup
Killed
然后程序就死掉了。Top




