我需要遞歸搜索給定文件名的一個UNC路徑(request
),我已經成功連接到路徑,並找到了搜索here的答案,但是,當我編譯我的程序,我得到了以下錯誤:遞歸搜索一個目錄,我不明白的編譯錯誤
find-util.c: In function ‘char* search_utils(const char*, int, bool)’:
find-util.c:51:16: error: ‘struct dirent’ has no member named ‘d_type’
if (ent->d_type == DT_DIR)
^
find-util.c:51:26: error: ‘DT_DIR’ was not declared in this scope
if (ent->d_type == DT_DIR)
^
我在Ubuntu 16.04是使用mingw
編譯器交叉編譯,以便能夠在Windows 7上運行我缺少一個庫?或者還有其他事情我沒有看到?
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <dirent.h>
#include <string.h>
static char *search_utils(const char *request, int depth, bool verbose)
{
DIR *dir;
struct dirent *ent;
puts("Connecting to mgtutils..");
if ((dir = opendir(MG_PATH)) != NULL)
{
while ((ent = readdir(dir)) != NULL)
{
if (verbose == true)
{
printf("Searching%s for %s\n", ent->d_name, request);
}
if (ent->d_type == DT_DIR)
{
if ((strlen(MG_PATH) + strlen(ent->d_name) + 1) > PATH_MAX)
{
puts("Path to long, cannot");
}
}
}
}
}
Linux的Ubuntu 16.04,mingw編譯器交叉編譯到Windows 7 – justAnotherCat
嗯。 'readdir()'在Windows上不存在。 win32 API改爲提供FindFirst()FindNext()。然而,mingw可能會像'readdir()'一樣將它包裝到Posix中。 (我不知道。)因此,我的答案的底部可能會導致你進入正確的方向... – Scheff
思考兩次我關心什麼標題用於交叉編譯。仔細閱讀'gcc'的命令行調用(尤其是包含'-I'參數之後的目錄)應該給出提示。我從來沒有這樣做過,但我知道有人在Linux/mingw之間交叉編譯Windows的庫。如果你被困住了,我可以問他... – Scheff