c++ - 编译一个使用 sfml 和 mingw 从 linux 移植到 windows 的 C++ 程序

标签 c++ g++ mingw libraries sfml

在尝试编译一个使用 sfml 但无法编译的简单程序 (main.cpp) 时,我经常使用库。我真的对 mingw 感到困惑; mingw 如何使用 gcc(在本例中为 g++)以及它如何使用库?

检查一下:

x86_64-w64-mingw32-g++ -o app.exe main.cpp -I/usr/include/ -I/usr/include/x86_64-linux-gnu/ -lsfml-graphics -lsfml-audio -lsfml-network -lsfml-window -lsfml-system
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdint:41:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/char_traits.h:420,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/stdint.h:124:27: error: conflicting declaration ‘typedef long unsigned int uintptr_t’
 typedef unsigned long int uintptr_t;
                           ^~~~~~~~~
In file included from /usr/share/mingw-w64/include/stddef.h:7:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/stddef.h:1,
                 from /usr/include/wchar.h:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cwchar:44,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/postypes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/iosfwd:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:38,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/crtdefs.h:75:44: note: previous declaration as ‘typedef long long unsigned int uintptr_t’
 __MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
                                            ^~~~~~~~~
In file included from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9:0,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/stdlib.h:63:5: error: conflicting declaration ‘typedef struct div_t div_t’
   } div_t;
     ^~~~~
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/stdlib.h:62:5: note: previous declaration as ‘typedef struct _div_t div_t’
   } div_t;
     ^~~~~
In file included from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9:0,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/stdlib.h:71:5: error: conflicting declaration ‘typedef struct ldiv_t ldiv_t’
   } ldiv_t;
     ^~~~~~
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/stdlib.h:67:5: note: previous declaration as ‘typedef struct _ldiv_t ldiv_t’
   } ldiv_t;
     ^~~~~~
In file included from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9:0,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/stdlib.h:83:5: error: conflicting declaration ‘typedef struct lldiv_t lldiv_t’
   } lldiv_t;
     ^~~~~~~
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/stdlib.h:653:61: note: previous declaration as ‘typedef struct lldiv_t lldiv_t’
   typedef struct { __MINGW_EXTENSION long long quot, rem; } lldiv_t;
                                                             ^~~~~~~
In file included from /usr/include/stdlib.h:291:0,
                 from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/x86_64-linux-gnu/sys/types.h:109:19: error: conflicting declaration ‘typedef __ssize_t ssize_t’
 typedef __ssize_t ssize_t;
                   ^~~~~~~
In file included from /usr/share/mingw-w64/include/stddef.h:7:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/stddef.h:1,
                 from /usr/include/wchar.h:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cwchar:44,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/postypes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/iosfwd:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:38,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/crtdefs.h:45:35: note: previous declaration as ‘typedef long long int ssize_t’
 __MINGW_EXTENSION typedef __int64 ssize_t;
                                   ^~~~~~~
In file included from /usr/include/x86_64-linux-gnu/sys/types.h:130:0,
                 from /usr/include/stdlib.h:291,
                 from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/x86_64-linux-gnu/bits/types/time_t.h:8:18: error: conflicting declaration ‘typedef __time_t time_t’
 typedef __time_t time_t;
                  ^~~~~~
In file included from /usr/share/mingw-w64/include/stddef.h:7:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/stddef.h:1,
                 from /usr/include/wchar.h:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cwchar:44,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/postypes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/iosfwd:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:38,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/crtdefs.h:138:20: note: previous declaration as ‘typedef __time64_t time_t’
 typedef __time64_t time_t;
                    ^~~~~~
In file included from /usr/share/mingw-w64/include/sec_api/stdlib_s.h:9:0,
                 from /usr/share/mingw-w64/include/stdlib.h:694,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/stdlib.h:555:12: error: conflicting declaration of C function ‘int putenv(char*)’
 extern int putenv (char *__string) __THROW __nonnull ((1));
            ^~~~~~
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/stdlib.h:639:15: note: previous declaration ‘int putenv(const char*)’
   int __cdecl putenv(const char *_EnvString) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
               ^~~~~~
In file included from /usr/include/stdio.h:856:0,
                 from /usr/include/malloc.h:24,
                 from /usr/share/mingw-w64/include/stdlib.h:695,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/x86_64-linux-gnu/bits/sys_errlist.h:27:38: error: conflicting declaration ‘const char* const _sys_errlist []’
 extern const char *const sys_errlist[];
                                      ^
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ext/string_conversions.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_string.h:5417,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/string:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/stdlib.h:164:38: note: previous declaration as ‘char* _sys_errlist [1]’
   extern __declspec(dllimport) char *_sys_errlist[1];
                                      ^~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cwctype:50:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/locale_facets.h:39,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/basic_ios.h:37,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:44,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/include/wctype.h:52:27: error: conflicting declaration ‘typedef long unsigned int wctype_t’
 typedef unsigned long int wctype_t;
                           ^~~~~~~~
In file included from /usr/share/mingw-w64/include/stddef.h:7:0,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/stddef.h:1,
                 from /usr/include/wchar.h:52,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/cwchar:44,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/bits/postypes.h:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/iosfwd:40,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ios:38,
                 from /usr/lib/gcc/x86_64-w64-mingw32/6.3-win32/include/c++/ostream:38,
                 from /usr/include/SFML/System/Err.hpp:32,
                 from /usr/include/SFML/System.hpp:34,
                 from /usr/include/SFML/Window.hpp:32,
                 from /usr/include/SFML/Graphics.hpp:32,
                 from main.cpp:1:
/usr/share/mingw-w64/include/crtdefs.h:107:24: note: previous declaration as ‘typedef short unsigned int wctype_t’
 typedef unsigned short wctype_t;

它需要来自 /usr/include/usr/include/x86_64-linux-gnu/ 的文件,但现在它显示了所有这些错误...我我已经成功编译了一个使用在 linux 中运行的 sfml 的程序和一个在 windows 中运行的简单(仅限标准库)程序,但我无法使这个(使用 sfml 的 c++ 程序)为 windows 编译。请注意,我的操作系统是 debian linux 发行版。

最佳答案

此问题与 SFML 本身无关。

您的交叉编译环境有问题,因为编译器将来自 MinGW 的文件(例如 /usr/share/mingw-w64/include/stdlib.h)与来自您的主机的文件混合在一起系统(例如 /usr/include/stdlib.h)。

您传递 -I/usr/include/-I/usr/include/x86_64-linux-gnu/ 是否有特定原因?这是错误的,因为它们是 Linux 特定的,而不是 MinGW 的正确版本。

您还必须交叉编译 SFML 并将其安装在某处,不是直接在您的常规 /usr/ 路径中,如果这些路径是指向SFML.

我建议您将 SFML 安装到 /usr/share/mingw-w64,因为这应该允许 MinGW 开箱即用地获取正确的文件,而无需您提供路径。

关于c++ - 编译一个使用 sfml 和 mingw 从 linux 移植到 windows 的 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47942015/

相关文章:

c - 在 Windows 上扩展 OpenCV 1.1 中 GUI 功能的最简单方法?

c++ - 使用 VerQueryValue 检索应用程序的文件描述

c++ - 自定义分配器性能

gcc - CMake 文件中的 add_definitions 和 set 有什么区别

qt - 使用windeployqt时为"Warning: Cannot find GCC installation directory. g++.exe must be in the path."

c++ - 什么是 "stack alignment"?

c++ - 在 ubuntu 中用 clang 编译 R 包

java - 在软件中学习算法和保存数据

c++ - 如何通过 GCC 检测 vsnprintf 中的隐式转换

shell - 使用 GUI 安装程序安装后我找不到我的 MinGW shell