这更多是关于Android的设计问题。
我有一个共享库,它公开了某种接口,让我们假设IFoo
。我不想创建通常的IFoo* CreateFoo()
和DeleteFoo(IFoo*)
对,而是想制作一个CreateFoo(std::shared_ptr<IFoo>&)
模式,在构造std::shared_ptr
时在内部设置一个适当的删除器,以便客户端不负责手动释放接口。现在,这在Windows和MacOS上还可以,但是我遇到了Android方面的问题。假设我需要能够支持gcc和clang ndk版本(我知道从ndk 18开始不推荐使用gcc,但是仍然有人使用旧版本的ndk来生产代码)。出现的问题是,由于名称修改,如果共享对象是使用clang构建的,并且他使用gcc或相反,则不能使用CreateFoo(std::shared_ptr<IFoo>&)
方法。我可以:
IFoo
的单独创建和删除方法但是也许还有其他解决此问题的好方法?