我正在尝试编译这个项目Realtimebattle reloaded (github)。
但gcc抛出了奇怪的错误:
RealTimeBattle_reloaded/RealtimeBattle/original_gtk/src/Various.cc:473:30: error: cannot convert ‘dirent*’ to ‘search_directories(std::string, std::list<start_tournament_info_t*>&, bool)::direct*’ in assignment
while( NULL != ( entry = readdir( dir ) ) )源码是:
void
search_directories( string directory,
list<start_tournament_info_t*>& tour_list,
const bool check_robots )
{
bool err_in_file = false;
DIR* dir;
if( NULL != ( dir = opendir(directory.c_str()) ) )
{
struct dirent* entry;
while( NULL != ( entry = readdir( dir ) ) )
{
string full_file_name = directory + entry->d_name;
bool res = false;
if(check_robots)
res = check_if_filename_is_robot(full_file_name, &err_in_file);
else
res = check_if_filename_is_arena(full_file_name, &err_in_file);
if(res)
{
start_tournament_info_t* info;
info = new start_tournament_info_t(0, false, full_file_name, "");
tour_list.push_back( info );
}
}
closedir(dir);
}
}我对日志感到非常困惑。
发布于 2017-04-10 09:32:06
原始版本没有使用CMake:https://github.com/ezag/realtimebattle
这可能是到CMake构建系统的一个不完整的移植。
这里发生的事情是代码依赖于编译时定义的宏。
将'#define HAVE_DIRENT_H‘放在Various.cc的顶部可能会使代码编译……但可能还有更多的问题,而不仅仅是这一个案例。
https://stackoverflow.com/questions/43313654
复制相似问题