因此,我已经成功地达到了在Windows mingw上编译libusbmuxd以将其用于Windows平台的地步。

但是,尽管autogen.sh和configure正确完成了

它无法在下面创建libusbmuxd。有人对此有任何想法吗?是否有关于如何在Windows中进行构建的明确说明?

$ make
make all-recursive
make[1]: Entering directory /home/Naver/libusbmuxd-1.0.10' Making all in common make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/common'
CC collection.lo
CCLD libinternalcommon.la
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/common' Making all in src make[2]: Entering directory/home/Naver/libusbmuxd-1.0.10/src'
CC libusbmuxd.lo
libusbmuxd.c:46:26: error: expected ';', ',' or ')' before numeric constant
#define sleep(x) Sleep(x*1000)
^
libusbmuxd.c:46:25: error: expected ';', ',' or ')' before '' token
#define sleep(x) Sleep(x*1000)
^
make[2]: ** [libusbmuxd.lo] Error 1
make[2]: Leaving directory /home/Naver/libusbmuxd-1.0.10/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory/home/Naver/libusbmuxd-1.0.10'
make: *** [all] Error 2

最佳答案

这可能是计算机上的本地问题(请参阅下文*),因为查看the code行就可以了。某些头文件可能已损坏/损坏。您可以检查上面直接包含的<winsock2.h>,并可能在此位置导致编译器错误:

#ifdef WIN32
#include <windows.h>
#include <winsock2.h>
#define sleep(x) Sleep(x*1000)


因此,您可以例如预处理源文件(cpp -E libusbmuxd.c >libusbmuxd_pp.c)并检查结果。 (尝试编译它以找到错误的新行号)。

*)顺便说一句,我在MinGW中的cpp给了我这个:

D:\test>cpp -E test.c >test2.c
In file included from test.c:45:0:
d:\mingw\x86_64-w64-mingw32\include\winsock2.h:15:2: warning: #warning  Please include winsock2.h before windows.h [-Wcpp]
 #warning Please include winsock2.h before windows.h
  ^


因此,也许在源代码中交换#include指令可以解决此问题。

关于c++ - 在Windows libusbmuxd中使用mingw编译c,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31558731/

10-11 18:19