+ -
当前位置:首页 → 问答吧 → 如何在C程序中使用C++中的vector

如何在C程序中使用C++中的vector

时间:2011-11-30

来源:互联网

需要在C程序中使用C++中的vector容器,如何实现把vector之类的东西封装好,提供C程序接口,编译成一个.so动态链接库,给其他纯C程序使用?

作者: argentina_italy_chin   发布时间: 2011-11-30

不会呀。。。

不过你可以复制VECTOR的所有代码修改成这样:

vector::push_back(Elem elem);
改成:

push_back(struct vector* pvec,Elem elem);

还有,用C接口完全实现vector的功能是不可能的。因为vector是一个模板。用C语言没办导出模板来。。。。

作者: mingliang1212   发布时间: 2011-11-30

碉堡了。。。

作者: cwh5635   发布时间: 2011-11-30

先实现一个struct Vector_int
{
Vector_int* (*Create)(size);//简单的说就是一个包含一个封装了vector的函数的指针结构体
};
由这些函数去管理你的vector对象。
不能给你本身的客户代码管理。因为你得不到vector的原型。
然后编译成.so就可以了
对每种元素都必须要写一次 = =蛋疼

作者: cwh5635   发布时间: 2011-11-30

如果c可使用c++的STL类库,就不会有C++语言了
如果你真的要用,也可以.
先用C++的vector实现你要的,封装成C方式的DLL(linux下share lib),然用C调用它

作者: keiy   发布时间: 2011-11-30

引用 4 楼 keiy 的回复:

如果c可使用c++的STL类库,就不会有C++语言了
如果你真的要用,也可以.
先用C++的vector实现你要的,封装成C方式的DLL(linux下share lib),然用C调用它

谢谢,是这样想的,但封装的实现还没有太好的想法,如何知道请指教

作者: argentina_italy_chin   发布时间: 2011-11-30

若windwos下,用C++写一DLL,类似:
extern "C" __declspec(dllexport) int test (int x) //返回 int,参数int ,按要求改
{
  //以下用C++实现你的功能
  vector <int> *v=new vector <int>[x]; //用C参数生成一个vector
  //你要处理的....
  return xxx; //结果返回给C
}
然后在C中调用这个DLL就可以了


作者: keiy   发布时间: 2011-11-30