C++ 由于相同的文件名/类名出现在不同的so';s
我会尽力解释的 BaseModule.so也有C++ 由于相同的文件名/类名出现在不同的so';s,c++,linux,object,shared,C++,Linux,Object,Shared,我会尽力解释的 BaseModule.so也有 具有名为core的类的core.h。core.cpp已经实现了 access1.cpp派生自core access2.cpp派生自core 模块1.1也有 Mod1.cpp/h具有Mod1类的声明和实现 ModHelper.cpp为Mod1类提供值 core.h core.cpp有一个名为core的类,用于帮助ModHelper计算值(函数签名与基本模块中的核心类非常相似,但在实现上有一些更改) 模块2.so Mod2.cpp/h具有Mo
- 具有名为core的类的core.h。core.cpp已经实现了
- access1.cpp派生自core
- access2.cpp派生自core
- Mod1.cpp/h具有Mod1类的声明和实现
- ModHelper.cpp为Mod1类提供值
- core.h core.cpp有一个名为core的类,用于帮助ModHelper计算值(函数签名与基本模块中的核心类非常相似,但在实现上有一些更改)
- Mod2.cpp/h具有Mod2类的声明和实现
- ModCalculator.cpp/h有助于计算Mod2类的值
- ModCalculator使用BaseModule中的access1 access2对象
我们正在添加模块…并且不涉及BaseMod功能。最终找到了上述问题的解决方案 问题是。。 Module1.so的makefile引用了BaseModule库,因此,当下一个so(Module2)尝试访问BaseModule引用时,core(core.cpp)中的函数被Module1.so中core.cpp的函数覆盖
修改makefile(删除对BaseModule的库引用)解决了我的问题。请发布一个最小的可复制代码。
函数签名与基本模块中的核心类非常相似,但在实现上有一些更改
那么您应该使用名称空间,以便名称不会冲突,或者不要对类使用相同的名称。想知道即使它们是完全不同的so中的类,名称如何冲突?而且,派生属性不应该调用其基类方法,而应该调用具有类似名称的类的方法吗?这使我更加困惑。