CMake and MinGW w64 and windows system libraries

瘦欲@ 提交于 2019-12-14 00:41:52

问题


I start to learn CMake. I want to build my application with SDL2 library using MinGW w64. I generate Makefiles and use mingw32-make for building my app. But my app doesn't execute without any messages (my OS is Windows 10). First about I thought that my app doesn't see it dependecies. I try to use DependencyWalker and figure out next. My app doesn't see libriries like

API-MS-WIN-CORE-APIQUERY-L1-1-0.DLL API-MS-WIN-CORE-APPCOMPAT-L1-1-0.DLL API-MS-WIN-CORE-APPCOMPAT-L1-1-1.DLL API-MS-WIN-CORE-APPINIT-L1-1-0.DLL

and many other API-MS-WIN libraries. As I can see this libraries lie in C:\Windows\System32 and in C:\Windows\SysWOW64. When I build my app I link next libraries -lmingw32 -lSDL2main -lSDL -mwindows and it links without any errors and DependencyWalker doesn't say something bad about this. Why my built app didn't see windows system libraries? My PATH environment has System32 directory but hasn't SysWOW64. Maybe is problem in this?

UPDATE

I try add to PATH environment SysWOW64 and it doesn't help. Add DependecyWalker screenshots

one

two

three

UPDATE 2

collapsed


回答1:


Oh, no! I did a big mistake. My problem is not windows dll. I follow to this guide. I didn't write part of code where windows are creating. My code was

//Using SDL and standard IO
#include <SDL.h>
#include <stdio.h>

//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

int main( int argc, char* args[] )
{
    //The window we'll be rendering to
    SDL_Window* window = NULL;

    //The surface contained by the window
    SDL_Surface* screenSurface = NULL;

    //Initialize SDL
    if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }
    else
    {
        //Get window surface
        screenSurface = SDL_GetWindowSurface( window );

        //Fill the surface white
        SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );

        //Update the surface
        SDL_UpdateWindowSurface( window );

        //Wait two seconds
        SDL_Delay( 2000 );
    }
}

Be careful when you write code from examples:) I fixed this by adding part that I missed. Now my program works fine.



来源:https://stackoverflow.com/questions/50590930/cmake-and-mingw-w64-and-windows-system-libraries

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!