CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

如何在C函数中调用C++函数(gcc/g++)?

楼主galfordck()2002-10-16 10:00:33 在 C/C++ / C语言 提问

请问有谁试过在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

相关问题

  • C#函数调用问题
  • C++中如何调用c的函数。
  • c++中如何调用C函数
  • C++程序调用C函数
  • C#调用C++函数问题
  • c调用C++函数的问题
  • C中调用C++的函数问题。。。
  • c中能调用API函数吗?
  • PHP中可以调用c函数吗?
  • c#中可以调用api函数吗?

关键词

  • .net
  • c++
  • 函数
  • 编译器
  • csdn
  • 业务
  • 调用
  • 帖子
  • chinaok
  • 封装

得分解答快速导航

  • 帖主:galfordck
  • alexxing

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo