我目前正在将一个包含数百个代码文件和依赖项的项目移植到几个第三方库到 Mac Os 上。我终于达到了程序编译没有警告或错误的地步,但它似乎没有执行我自己的 main 函数。
相反,它似乎执行了一些其他似乎属于第三方的主要功能。此函数将一些诊断数据写入控制台,然后退出:
(gdb) continue
Current language: auto; currently c++
//
// This is an automatically generated file.
// Do not edit.
//
const unsigned short expTable[] =
{
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
...
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
};
Debugger stopped.
Program exited with status value:0.
我无法使用调试器找出这个 main 函数所在的位置,因为虽然堆栈跟踪似乎有效,但 gdb 没有向我显示每个堆栈条目的正确行号和文件名(有关详细信息,请参阅这个未解决的问题)。
搜索需要几分钟才能完成,但没有返回任何结果。
我的项目在其他库中使用 SDL,但我获得了 SDL_Main() 和潜在问题的奖励,并且在完美运行的 SDL 项目模板之上构建了我的项目。所以我很确定我自己的主要功能是有效的。
你知道可能出了什么问题吗?我目前对如何查找和删除流氓主要功能一无所知。
谢谢,
阿德里安
编辑:正如我刚刚发现的那样,我在使用字符串“这是自动生成的”搜索文件文件时犯了一个错误。我刚刚发现了几十个具有相同字符串的文件,它们都属于我正在使用的第三方库之一 FreeImage。因此,问题似乎与 FreeImage 有关,但我仍然不确定如何继续,因为我已将 Freeimage 编译为包含 MacOs makefile 的库并且仅包含该库。我会尝试重建一个更新版本的 FreeImage 并查看它是否解决了我的问题。