我正在C開發一個應用程序,我需要使用第三方C++庫。所以,我基本上是圍繞C++庫編寫一個包裝器,以便可以從純C中的應用程序調用它。庫中的一些方法返回類型爲boost :: shared_ptr的指針,我需要將其轉換爲void * [for C],然後將其轉換回boost :: shared_ptr類型以重用它以進行進一步處理。我用下面的方法來進行轉換:boost :: shared_ptr void *反之亦然
到void *:
void * func1()
{
//after the boost::shared_ptr is created
return static_cast<void *> (SHARED_PTR.get())
}
從無效*:
void func2(void * VOID_PTR) //VOID_PTR returned by func1
{
boost::shared_ptr<T> SHARED_PTR = *(boost::shared_ptr <T> *)(VOID_PTR);
}
但是,我得到的FUNC2 SIGSEGV,我相信這是發生因爲shared_ptr被取消分配,因爲它的引用計數變爲0.
我一直在尋找正確的方法來完成這個轉換和來自SO社區專家的建議。
在此先感謝!
不宜背鑄真的是初始化呢?如'boost :: shared_ptr(VOID_PTR)'? –
2013-12-14 11:36:26