
Recherche avancée
Médias (1)
-
Bug de détection d’ogg
22 mars 2013, par
Mis à jour : Avril 2013
Langue : français
Type : Video
Autres articles (53)
-
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Creating farms of unique websites
13 avril 2011, parMediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...) -
La sauvegarde automatique de canaux SPIP
1er avril 2010, parDans le cadre de la mise en place d’une plateforme ouverte, il est important pour les hébergeurs de pouvoir disposer de sauvegardes assez régulières pour parer à tout problème éventuel.
Pour réaliser cette tâche on se base sur deux plugins SPIP : Saveauto qui permet une sauvegarde régulière de la base de donnée sous la forme d’un dump mysql (utilisable dans phpmyadmin) mes_fichiers_2 qui permet de réaliser une archive au format zip des données importantes du site (les documents, les éléments (...)
Sur d’autres sites (9016)
-
How to make your plugin multilingual – Introducing the Piwik Platform
29 octobre 2014, par Thomas Steur — DevelopmentThis is the next post of our blog series where we introduce the capabilities of the Piwik platform (our previous post was Generating test data – Introducing the Piwik Platform). This time you’ll learn how to equip your plugin with translations. Users of your plugin will be very thankful that they can use and translate the plugin in their language !
Getting started
In this post, we assume that you have already set up your development environment and created a plugin. If not, visit the Piwik Developer Zone where you’ll find the tutorial Setting up Piwik and other Guides that help you to develop a plugin.
Managing translations
Piwik is available in over 50 languages and comes with many translations. The core itself provides some basic translations for words like “Visitor” and “Help”. They are stored in the directory
/lang
. In addition, each plugin can provide its own translations for wordings that are used in this plugin. They are located in/plugins/*/lang
. In those directories you’ll find one JSON file for each language. Each language file consists in turn of tokens that belong to a group.{
"MyPlugin":{
"BlogPost": "Blog post",
"MyToken": "My translation",
"InteractionRate": "Interaction Rate"
}
}A group usually represents the name of a plugin, in this case “MyPlugin”. Within this group, all the tokens are listed on the left side and the related translations on the right side.
Building a translation key
As you will later see to actually translate a word or a sentence you’ll need to know the corresponding translation key. This key is built by combining a group and a token separated by an underscore. You can for instance use the key
MyPlugin_BlogPost
to get a translation of “Blog post”. Defining a new key is as easy as adding a new entry to the “MyPlugin” group.Providing default translations
If a translation cannot be found then the English translation will be used as a default. Therefore, you should always provide a default translation in English for all keys in the file
en.json
(ie,/plugins/MyPlugin/lang/en.json
).Adding translations for other languages
This is as easy as creating new files in the lang subdirectory of your plugin. The filename consists of a 2 letter ISO 639-1 language code completed by the extension
.json
. This means German translations go into a file namedde.json
, French ones into a file namedfr.json
. To see a list of languages you can use have a look at the /lang directory.Reusing translations
As mentioned Piwik comes with quite a lot of translations. You can and should reuse them but you are supposed to be aware that a translation key might be removed or renamed in the future. It is also possible that a translation key was added in a recent version and therefore is not available in older versions of Piwik. We do not currently announce any of such changes. Still, 99% of the translation keys do not change and it is therefore usually a good idea to reuse existing translations. Especially when you or your company would otherwise not be able to provide them. To find any existing translation keys go to Settings => Translation search in your Piwik installation. The menu item will only appear if the development mode is enabled.
Translations in PHP
Use the Piwik::translate() function to translate any text in PHP. Simply pass any existing translation key and you will get the translated text in the language of the current user in return. The English translation will be returned in case none for the current language exists.
$translatedText = Piwik::translate('MyPlugin_BlogPost');
Translations in Twig Templates
To translate text in Twig templates, use the translate filter.
{{ 'MyPlugin_BlogPost'|translate }}
Contributing translations to Piwik
Did you know you can contribute translations to Piwik ? In case you want to improve an existing translation, translate a missing one or add a new language go to Piwik Translations and sign up for an account. You won’t need any knowledge in development to do this.
Advanced features
Of course there are more useful things you can do with translations. For instance you can use placeholders like
%s
in your translations and you can use translations in JavaScript as well. In case you want to know more about those topics check out our Internationalization guide. Currently, this guide only covers translations but we will cover more topics like formatting numbers and handling currencies in the future.Congratulations, you have learnt how to make your plugin multilingual !
If you have any feedback regarding our APIs or our guides in the Developer Zone feel free to send it to us.
-
How to make your plugin multilingual – Introducing the Piwik Platform
29 octobre 2014, par Thomas Steur — DevelopmentThis is the next post of our blog series where we introduce the capabilities of the Piwik platform (our previous post was Generating test data – Introducing the Piwik Platform). This time you’ll learn how to equip your plugin with translations. Users of your plugin will be very thankful that they can use and translate the plugin in their language !
Getting started
In this post, we assume that you have already set up your development environment and created a plugin. If not, visit the Piwik Developer Zone where you’ll find the tutorial Setting up Piwik and other Guides that help you to develop a plugin.
Managing translations
Piwik is available in over 50 languages and comes with many translations. The core itself provides some basic translations for words like “Visitor” and “Help”. They are stored in the directory
/lang
. In addition, each plugin can provide its own translations for wordings that are used in this plugin. They are located in/plugins/*/lang
. In those directories you’ll find one JSON file for each language. Each language file consists in turn of tokens that belong to a group.{
"MyPlugin":{
"BlogPost": "Blog post",
"MyToken": "My translation",
"InteractionRate": "Interaction Rate"
}
}A group usually represents the name of a plugin, in this case “MyPlugin”. Within this group, all the tokens are listed on the left side and the related translations on the right side.
Building a translation key
As you will later see to actually translate a word or a sentence you’ll need to know the corresponding translation key. This key is built by combining a group and a token separated by an underscore. You can for instance use the key
MyPlugin_BlogPost
to get a translation of “Blog post”. Defining a new key is as easy as adding a new entry to the “MyPlugin” group.Providing default translations
If a translation cannot be found then the English translation will be used as a default. Therefore, you should always provide a default translation in English for all keys in the file
en.json
(ie,/plugins/MyPlugin/lang/en.json
).Adding translations for other languages
This is as easy as creating new files in the lang subdirectory of your plugin. The filename consists of a 2 letter ISO 639-1 language code completed by the extension
.json
. This means German translations go into a file namedde.json
, French ones into a file namedfr.json
. To see a list of languages you can use have a look at the /lang directory.Reusing translations
As mentioned Piwik comes with quite a lot of translations. You can and should reuse them but you are supposed to be aware that a translation key might be removed or renamed in the future. It is also possible that a translation key was added in a recent version and therefore is not available in older versions of Piwik. We do not currently announce any of such changes. Still, 99% of the translation keys do not change and it is therefore usually a good idea to reuse existing translations. Especially when you or your company would otherwise not be able to provide them. To find any existing translation keys go to Settings => Translation search in your Piwik installation. The menu item will only appear if the development mode is enabled.
Translations in PHP
Use the Piwik::translate() function to translate any text in PHP. Simply pass any existing translation key and you will get the translated text in the language of the current user in return. The English translation will be returned in case none for the current language exists.
$translatedText = Piwik::translate('MyPlugin_BlogPost');
Translations in Twig Templates
To translate text in Twig templates, use the translate filter.
{{ 'MyPlugin_BlogPost'|translate }}
Contributing translations to Piwik
Did you know you can contribute translations to Piwik ? In case you want to improve an existing translation, translate a missing one or add a new language go to Piwik Translations and sign up for an account. You won’t need any knowledge in development to do this.
Advanced features
Of course there are more useful things you can do with translations. For instance you can use placeholders like
%s
in your translations and you can use translations in JavaScript as well. In case you want to know more about those topics check out our Internationalization guide. Currently, this guide only covers translations but we will cover more topics like formatting numbers and handling currencies in the future.Congratulations, you have learnt how to make your plugin multilingual !
If you have any feedback regarding our APIs or our guides in the Developer Zone feel free to send it to us.
-
I can't compile ffmpeg, don't know how to install sdl2 properly
11 mai 2019, par woopwoop399I’m compiling ffmpeg, on windows, with mingw-w64, and I need SDL2 so that the ffplay in ffmpeg compiles. I installed mingw-w64 using the web installer, I installed msys (to run the
./configure
that comes with ffmpeg) using the all in one package provided by mingw-w64. I installed SDL2 by downloading dev binaries from their site and runningmake native
in msys.So, it seems SDL2 isn’t installed properly or something.
Here is the problematic part in
./configure
:if enabled sdl2; then
echo "SDL2-1"
SDL2_CONFIG="${cross_prefix}sdl2-config"
test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent
echo "SDL2-2"
if disabled sdl2 && "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
echo "SDL2-3"
sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
echo "SDL2-config ${SDL2_CONFIG}"
echo "SDL2-cflags ${sdl2_cflags}"
echo "SDL2-libs ${sdl2_extralibs}"
test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
echo "SDL2-4" &&
test_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
echo "SDL2-5" &&
check_func_headers SDL_events.h SDL_PollEvent $sdl2_extralibs $sdl2_cflags &&
echo "SDL2-6-final" &&
enable sdl2
fi
if test $target_os = "mingw32"; then
sdl2_extralibs=$(filter_out '-mwindows' $sdl2_extralibs)
fi
fiThis is the result of it, it never gets to
SDL2-6-final
andenable sdl2
SDL2-1
SDL2-2
SDL2-3
SDL2-config sdl2-config
SDL2-cflags -I/usr/include/SDL2 -Dmain=SDL_main
SDL2-libs -L/usr/lib -lmingw32 -lSDL2main -lSDL2 -mwindows
SDL2-4
SDL2-5This is the sdl2 installation log :
User@NEW-PC /c/Users/User/Downloads/games/compilers/SDL2-2.0.9
$ make native
make install-package arch=i686-w64-mingw32 prefix=/usr
make[1]: Entering directory `/c/Users/User/Downloads/games/compilers/SDL2-2.0.9'
`bin/sdl2-config' -> `/usr/bin/sdl2-config'
`bin/SDL2.dll' -> `/usr/bin/SDL2.dll'
`include' -> `/usr/include'
`include/SDL2' -> `/usr/include/SDL2'
`include/SDL2/begin_code.h' -> `/usr/include/SDL2/begin_code.h'
`include/SDL2/close_code.h' -> `/usr/include/SDL2/close_code.h'
`include/SDL2/SDL.h' -> `/usr/include/SDL2/SDL.h'
`include/SDL2/SDL_assert.h' -> `/usr/include/SDL2/SDL_assert.h'
`include/SDL2/SDL_atomic.h' -> `/usr/include/SDL2/SDL_atomic.h'
`include/SDL2/SDL_audio.h' -> `/usr/include/SDL2/SDL_audio.h'
`include/SDL2/SDL_bits.h' -> `/usr/include/SDL2/SDL_bits.h'
`include/SDL2/SDL_blendmode.h' -> `/usr/include/SDL2/SDL_blendmode.h'
`include/SDL2/SDL_clipboard.h' -> `/usr/include/SDL2/SDL_clipboard.h'
`include/SDL2/SDL_config.h' -> `/usr/include/SDL2/SDL_config.h'
`include/SDL2/SDL_cpuinfo.h' -> `/usr/include/SDL2/SDL_cpuinfo.h'
`include/SDL2/SDL_egl.h' -> `/usr/include/SDL2/SDL_egl.h'
`include/SDL2/SDL_endian.h' -> `/usr/include/SDL2/SDL_endian.h'
`include/SDL2/SDL_error.h' -> `/usr/include/SDL2/SDL_error.h'
`include/SDL2/SDL_events.h' -> `/usr/include/SDL2/SDL_events.h'
`include/SDL2/SDL_filesystem.h' -> `/usr/include/SDL2/SDL_filesystem.h'
`include/SDL2/SDL_gamecontroller.h' -> `/usr/include/SDL2/SDL_gamecontroller.h'
`include/SDL2/SDL_gesture.h' -> `/usr/include/SDL2/SDL_gesture.h'
`include/SDL2/SDL_haptic.h' -> `/usr/include/SDL2/SDL_haptic.h'
`include/SDL2/SDL_hints.h' -> `/usr/include/SDL2/SDL_hints.h'
`include/SDL2/SDL_joystick.h' -> `/usr/include/SDL2/SDL_joystick.h'
`include/SDL2/SDL_keyboard.h' -> `/usr/include/SDL2/SDL_keyboard.h'
`include/SDL2/SDL_keycode.h' -> `/usr/include/SDL2/SDL_keycode.h'
`include/SDL2/SDL_loadso.h' -> `/usr/include/SDL2/SDL_loadso.h'
`include/SDL2/SDL_log.h' -> `/usr/include/SDL2/SDL_log.h'
`include/SDL2/SDL_main.h' -> `/usr/include/SDL2/SDL_main.h'
`include/SDL2/SDL_messagebox.h' -> `/usr/include/SDL2/SDL_messagebox.h'
`include/SDL2/SDL_mouse.h' -> `/usr/include/SDL2/SDL_mouse.h'
`include/SDL2/SDL_mutex.h' -> `/usr/include/SDL2/SDL_mutex.h'
`include/SDL2/SDL_name.h' -> `/usr/include/SDL2/SDL_name.h'
`include/SDL2/SDL_opengl.h' -> `/usr/include/SDL2/SDL_opengl.h'
`include/SDL2/SDL_opengles.h' -> `/usr/include/SDL2/SDL_opengles.h'
`include/SDL2/SDL_opengles2.h' -> `/usr/include/SDL2/SDL_opengles2.h'
`include/SDL2/SDL_opengles2_gl2.h' -> `/usr/include/SDL2/SDL_opengles2_gl2.h'
`include/SDL2/SDL_opengles2_gl2ext.h' -> `/usr/include/SDL2/SDL_opengles2_gl2ext.h'
`include/SDL2/SDL_opengles2_gl2platform.h' -> `/usr/include/SDL2/SDL_opengles2_gl2platform.h'
`include/SDL2/SDL_opengles2_khrplatform.h' -> `/usr/include/SDL2/SDL_opengles2_khrplatform.h'
`include/SDL2/SDL_opengl_glext.h' -> `/usr/include/SDL2/SDL_opengl_glext.h'
`include/SDL2/SDL_pixels.h' -> `/usr/include/SDL2/SDL_pixels.h'
`include/SDL2/SDL_platform.h' -> `/usr/include/SDL2/SDL_platform.h'
`include/SDL2/SDL_power.h' -> `/usr/include/SDL2/SDL_power.h'
`include/SDL2/SDL_quit.h' -> `/usr/include/SDL2/SDL_quit.h'
`include/SDL2/SDL_rect.h' -> `/usr/include/SDL2/SDL_rect.h'
`include/SDL2/SDL_render.h' -> `/usr/include/SDL2/SDL_render.h'
`include/SDL2/SDL_revision.h' -> `/usr/include/SDL2/SDL_revision.h'
`include/SDL2/SDL_rwops.h' -> `/usr/include/SDL2/SDL_rwops.h'
`include/SDL2/SDL_scancode.h' -> `/usr/include/SDL2/SDL_scancode.h'
`include/SDL2/SDL_sensor.h' -> `/usr/include/SDL2/SDL_sensor.h'
`include/SDL2/SDL_shape.h' -> `/usr/include/SDL2/SDL_shape.h'
`include/SDL2/SDL_stdinc.h' -> `/usr/include/SDL2/SDL_stdinc.h'
`include/SDL2/SDL_surface.h' -> `/usr/include/SDL2/SDL_surface.h'
`include/SDL2/SDL_system.h' -> `/usr/include/SDL2/SDL_system.h'
`include/SDL2/SDL_syswm.h' -> `/usr/include/SDL2/SDL_syswm.h'
`include/SDL2/SDL_test.h' -> `/usr/include/SDL2/SDL_test.h'
`include/SDL2/SDL_test_assert.h' -> `/usr/include/SDL2/SDL_test_assert.h'
`include/SDL2/SDL_test_common.h' -> `/usr/include/SDL2/SDL_test_common.h'
`include/SDL2/SDL_test_compare.h' -> `/usr/include/SDL2/SDL_test_compare.h'
`include/SDL2/SDL_test_crc32.h' -> `/usr/include/SDL2/SDL_test_crc32.h'
`include/SDL2/SDL_test_font.h' -> `/usr/include/SDL2/SDL_test_font.h'
`include/SDL2/SDL_test_fuzzer.h' -> `/usr/include/SDL2/SDL_test_fuzzer.h'
`include/SDL2/SDL_test_harness.h' -> `/usr/include/SDL2/SDL_test_harness.h'
`include/SDL2/SDL_test_images.h' -> `/usr/include/SDL2/SDL_test_images.h'
`include/SDL2/SDL_test_log.h' -> `/usr/include/SDL2/SDL_test_log.h'
`include/SDL2/SDL_test_md5.h' -> `/usr/include/SDL2/SDL_test_md5.h'
`include/SDL2/SDL_test_memory.h' -> `/usr/include/SDL2/SDL_test_memory.h'
`include/SDL2/SDL_test_random.h' -> `/usr/include/SDL2/SDL_test_random.h'
`include/SDL2/SDL_thread.h' -> `/usr/include/SDL2/SDL_thread.h'
`include/SDL2/SDL_timer.h' -> `/usr/include/SDL2/SDL_timer.h'
`include/SDL2/SDL_touch.h' -> `/usr/include/SDL2/SDL_touch.h'
`include/SDL2/SDL_types.h' -> `/usr/include/SDL2/SDL_types.h'
`include/SDL2/SDL_version.h' -> `/usr/include/SDL2/SDL_version.h'
`include/SDL2/SDL_video.h' -> `/usr/include/SDL2/SDL_video.h'
`include/SDL2/SDL_vulkan.h' -> `/usr/include/SDL2/SDL_vulkan.h'
`lib/cmake' -> `/usr/lib/cmake'
`lib/cmake/SDL2' -> `/usr/lib/cmake/SDL2'
`lib/cmake/SDL2/sdl2-config.cmake' -> `/usr/lib/cmake/SDL2/sdl2-config.cmake'
`lib/libSDL2.a' -> `/usr/lib/libSDL2.a'
`lib/libSDL2.dll.a' -> `/usr/lib/libSDL2.dll.a'
`lib/libSDL2.la' -> `/usr/lib/libSDL2.la'
`lib/libSDL2main.a' -> `/usr/lib/libSDL2main.a'
`lib/libSDL2main.la' -> `/usr/lib/libSDL2main.la'
`lib/libSDL2_test.a' -> `/usr/lib/libSDL2_test.a'
`lib/libSDL2_test.la' -> `/usr/lib/libSDL2_test.la'
`lib/pkgconfig' -> `/usr/lib/pkgconfig'
`lib/pkgconfig/sdl2.pc' -> `/usr/lib/pkgconfig/sdl2.pc'
`share/aclocal/sdl2.m4' -> `/usr/share/aclocal/sdl2.m4'
make[1]: Leaving directory `/c/Users/User/Downloads/games/compilers/SDL2-2.0.9'And this is what happens when I just comment out that last check in
./configure
and enable sdl2 anyway :c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2
I tried using msys2 instead, it compiles, but the debugger there doesn’t work for some reason. I need to run the source code of ffmpeg in debugger to have a chance of understanding anything there. I need to use the combination of codeblocks and gdb, and programs compiled with msys2 use weird pathnames like /c/bla/bla/bla/main.c, and codeblocks is righteously weirded out by that. The mingw-w64 uses more sane pathnames, I just checked that.
Checked
ffbuild/config.log
, the problem is here :`c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2`
More in full :
test_pkg_config sdl2 sdl2 >= 2.0.1 sdl2 < 2.1.0 SDL_events.h SDL_PollEvent
pkg-config --exists --print-errors sdl2 >= 2.0.1 sdl2 < 2.1.0
check_func_headers SDL_events.h SDL_PollEvent -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -lmingw32 -lSDL2main -lSDL2
test_ld cc -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -lmingw32 -lSDL2main -lSDL2
test_cc -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib
BEGIN /tmp/ffconf.atBoPojc/test.c
1 #include
2 #include
3 long check_SDL_PollEvent(void) { return (long) SDL_PollEvent; }
4 int main(void) { int ret = 0;
5 ret |= ((intptr_t)check_SDL_PollEvent) & 0xFFFF;
6 return ret; }
END /tmp/ffconf.atBoPojc/test.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -U__STRICT_ANSI__ -D__USE_MINGW_ANSI_STDIO=1 -D__printf__=__gnu_printf__ -D_WIN32_WINNT=0x0600 -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -c -o /tmp/ffconf.atBoPojc/test.o /tmp/ffconf.atBoPojc/test.c
C:/Users/User/AppData/Local/Temp/ffconf.atBoPojc/test.c: In function 'check_SDL_PollEvent':
C:/Users/User/AppData/Local/Temp/ffconf.atBoPojc/test.c:3:41: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
long check_SDL_PollEvent(void) { return (long) SDL_PollEvent; }
^
gcc -Wl,--nxcompat,--dynamicbase -Wl,--high-entropy-va -Wl,--as-needed -Wl,--image-base,0x140000000 -Dmain=SDL_main -IC:/msys/include/SDL2 -mwindows -LC:/msys/lib -o /tmp/ffconf.atBoPojc/test.exe /tmp/ffconf.atBoPojc/test.o -lmingw32 -lSDL2main -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib\libSDL2main.a when searching for -lSDL2main
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2main.a when searching for -lSDL2main
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2main
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib\libSDL2.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.dll.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible C:/msys/lib/libSDL2.a when searching for -lSDL2
c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lSDL2
collect2.exe: error: ld returned 1 exit statusOkay, I managed to compile. I removed the sdl libraries from
C:/msys/lib
, and added them toC:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\lib