Chinaunix首页 | 论坛 | 博客
  • 博客访问: 370142
  • 博文数量: 132
  • 博客积分: 3066
  • 博客等级: 中校
  • 技术积分: 781
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-14 16:19
文章分类

全部博文(132)

文章存档

2012年(1)

2010年(50)

2009年(81)

我的朋友

分类: C/C++

2010-05-18 16:19:40

最近项目需要C的接口,考虑到后面的应用可能复杂,纯C的开发效率不佳,故使用C++开发,extern出C的接口.
例子:
CppCode.cpp
Java代码
  1. #include   
  2. using namespace std;  
  3. extern "C" char* getNewString(char* inputStr)  
  4. {  
  5.         string cppString=string(inputStr);  
  6.         cppString.append("appender");  
  7.         cppString.copy(inputStr,cppString.size(),0);  
  8.         return inputStr;  
  9. }  

CCode.c
Java代码
  1. #include   
  2. int main()  
  3. {  
  4.         char* val=(char*)malloc(50*sizeof(char));  
  5.         strcpy(val,"HI,this is Thunderclock"); //must be less than 50 chars  
  6.         val=getNewString(val);  
  7.         printf("New String is %s \n",val);  
  8.         return 0;  
  9. }  

文件都放在/root/cpp下
编译成so文件
root@pvz:~/cpp# g++ -fPIC -shared -o cppTestLib.so CppCode.cpp
编译C成可执行
root@pvz:~/cpp# gcc CCode.c /root/cpp/cppTestLib.so -o testc
执行结果
New String is HI,this is Thunderclockappender

初步还是可以用的,效率之类要测试才知道.
注: 这个是测试用的,各位千万不能这样用指针啊,^^!.
阅读(1110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~