MinGW Netbeans 7.0和SDL 2在Windows上的链接项目
Linking project on MinGW Netbeans 7.0 and SDL 2 on Windows
当我试图从图形编程从"legacy openGL"x"SDL 1.x"升级到OpenGL3+x SDL2时,我遇到了链接问题。我尝试了许多链接参数,但似乎都不起作用。
我尝试了SDL1链接参数:链接列表1
-lmingw32 -lSDLmain -lSDL
它与此代码配合良好:代码列表1
#include <SDL2/SDL.h>
int main(int argc, char **argv)
{
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
SDL_Quit();
return -1;
}
SDL_Quit();
return 0;
}
但是当我像这样添加SDL2代码时:代码列表2
#include <SDL2/SDL.h>
int main(int argc, char **argv)
{
SDL_Window* window(0);
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
SDL_Quit();
return -1;
}
window = SDL_CreateWindow("Test SDL 2.0", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_SHOWN);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
我收到链接错误:错误列表1
g++ -o dist/Debug/MinGW-Windows/sdl2 build/Debug/MinGW-Windows/main.o -lmingw32 -lSDLmain -lSDL
build/Debug/MinGW-Windows/main.o: In function `SDL_main':
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:21: undefined reference to `SDL_CreateWindow'
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:23: undefined reference to `SDL_DestroyWindow'
collect2.exe: error: ld returned 1 exit status
将链接参数转换为此:链接列表2
-lmingw32 -lSDL -lSDLmain
给出了更多的错误(我不会把它们写下来)。将'2'添加到如下参数中:链接列表3
-lmingw32 -lSDL2main -lSDL2
与没有2s:错误列表2相比,会给我更多的链接错误
g++ -o dist/Debug/MinGW-Windows/sdl2 build/Debug/MinGW-Windows/main.o -lmingw32 -lSDL2main -lSDL2
build/Debug/MinGW-Windows/main.o: In function `SDL_main':
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:14: undefined reference to `SDL_Init'
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:16: undefined reference to `SDL_Quit'
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:21: undefined reference to `SDL_CreateWindow'
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:23: undefined reference to `SDL_DestroyWindow'
C:UsersPaikuhanDocumentsNetBeansProjectsSDL2/main.cpp:24: undefined reference to `SDL_Quit'
c:/programs/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/libmingw32.a(main.o): In function `main':
e:pgiawsrcpkgmingwrt-4.0.3-1-mingw32-srcbld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
就好像没有找到任何SDL函数一样,而且我在lib目录中有库(libSDL2.a、libSDL2.dll.a、libsd2.la、libSDL2main.a、pkgconfig\sdl2.pc)。我还尝试在netbeans中使用这组参数:链接清单4
$(pkg-config --cflags --libs sdl2)
而且没有任何好处。有人能帮我吗。非常感谢。
问题已解决!我试图解决链接错误。现在一切都很好!!LazyFoo的教程给出了答案"最重要的是i686-w64-mingw32,它包含32位库[…]这很重要:大多数编译器默认情况下仍然编译32位二进制文件,以最大限度地提高兼容性。[…]"。因此,我重新提取了相应目录中的所有32位文件。现在一切都像一个符咒。我的猜测是,我在32位mingw编译器中使用了64位libs。
两个链接参数都工作正常。这个:
$(pkg-config --cflags --libs sdl2)
或者这个:
-lmingw32 -lSDL2main -lSDL2
相关文章:
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- 如何链接 DLL 以供 LoadLibrary() 使用(在 Windows 上的 C++ 中)并从调用 exe 导入变
- 如何在Windows上链接动态构建的cmake文件
- 动态链接-Linux与Windows
- 尝试将 sfml 和 c++ 与 Windows 10 上的可移植 vscode 链接起来
- CMake Qt建立在Windows链接器问题之上
- CMake 生成的程序无法在 Windows 上链接:尝试链接到不存在的文件
- Godbolt 在 MSVC 上包含 Windows.h 时无法链接?
- SQLite 在 Windows 上的编译时不链接
- 使用 MINGW 和 CPLEX 库链接从 Linux 编译 Windows 可执行文件
- 如何强制Windows.h在Visual Studio中静态链接而不是动态链接?
- 链接 .lib 并在 Windows 中使用 .dll 在 C++ 在 Eclipse 中
- QT库链接Windows中的错误
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- cmake在Windows上与CPPRESTSDK链接
- 静态链接再次链接boost.test和cmake在Windows上的mingw
- libigl,GLEW,GLFW和Eigen在CLion,Windows 10上.链接器错误
- 在 Code::Blocks 中使用自定义安装目录在 Windows 上链接 SDL-bgi
- GetModuleInformation 在 Windows 10 中的链接上失败
- c++ Windows链接子系统问题