由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
seg fault due to same file name / class names present in different so's
我会尽力解释。
BaseModule.so 有
- Core.H 具有名为 core. core.cpp 的类具有实现
- 访问1.cpp派生自核心
- access2.cpp源自核心
Module1.so 有
Mod1- .cpp/h 具有 Mod1 类的声明和实现
- ModHelper.cpp 为 Mod1 类提供值
- core.h core.cpp 有一个名为 core 的类,它可以帮助 ModHelper 计算值(函数签名与 Base 模块中的核心类非常相似,但在实现上进行了一些更改(
Module2.so
Mod2- .cpp/h 具有 Mod2 类的声明和实现
- ModCalculator.cpp/h 有助于计算 Mod2 类的值
- ModCalculator 使用来自 BaseModule 的访问对象1 访问2
加载所有三个模块时分段故障
模块二的分段错误,我发现模块二中的access1类正在使用 Mod1.so 的核心.cpp函数,而不是使用BaseModule中的函数
它不应该使用 BaseModule 中的核心.cpp函数,因为它们是不同的?
我只能修改模块一 如何解决这个问题,如何防止将来发生这样的事情..
Linux 中的编译器 gcc 我们正在添加模块...并且不要触摸 BaseMod 功能。
终于找到了上述问题的解决方案。
问题是.. Module1.so 的 makefile 具有对 BaseModule 库的引用,因此,当下一个 so (Module2( 尝试访问 BaseModule 引用时,核心(core.cpp(中的函数被核心函数覆盖.cpp在 Module1.so
修改生成文件(删除对 BaseModule 的库引用(解决了我的问题。
相关文章:
- C++ - 将元素按升序插入数组的 SEG 错误
- 为什么我在使用 istream 迭代器时会出现 seg 错误?
- 字符串上的合并排序上的 Seg 错误
- 导致 Seg 错误的 SingleLinkedList 的析构函数
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- 函数抛出seg错误,我不知道为什么
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- 由于相同的文件名/类名存在于不同的SO中而导致的SEG错误
- 尝试访问 3D 矢量中的元素时出现 Seg 错误
- 垫子对象数组太大会导致 Seg 错误
- 为什么push_back成矢量<矢量<int>>导致 seg 错误?
- 在向量中存储字符串存在 SEG 错误
- 更改本地类名时出现 seg 错误
- 使用 ->GetString( " ") 时出现 Seg 错误,它位于单独的类中
- 将字符数组转换为 std::string 以传递到 std::bitset seg 错误
- 字符和 int 连接何时会导致 seg 错误?
- 静态数组溢出堆栈(seg 错误 11)仅在类定义内部时,否则不会..?
- .EOF 在读取文件时导致 Seg 错误:FIXXED
- 在 qt5 中使用 QSharedPointer 时出现 Seg 错误
- 为什么我的 if 语句会出现 seg 错误?