最新SDL 2.0版本中未定义的引用
Undefined references with latest SDL 2.0 build
我使用旧版本的SDL2已经有一段时间了,从来没有遇到过任何问题;但现在看起来东西没有正确连接,我不知道为什么。
下面是整个程序:
#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
int main(int argc, char *argv[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *win = nullptr;
SDL_CreateWindow("test", 100, 100, 100, 100, SDL_WINDOW_SHOWN);
return 0;
}
我使用的是codeblocks+mingw32,下面是我想象的构建日志的相关部分:
mingw32-g++.exe -LE:...SDL2-2.0.0x86_64-w64-mingw32lib -LE:ProgramsCode-Blockslib -o binDebugSDL2test.exe objDebugmain.o -pg -lgmon -lmingw32 -lSDL2main -lSDL2 -lSDL2.dll -lgdi32 -lwinmm -luser32
错误如下:
undefined reference to `SDL_Init'
undefined reference to `SDL_CreateWindow'
undefined reference to `WinMain@16'
为了便于比较,下面是几个月前使用SDL2构建编译得很好的程序的构建日志:
mingw32-g++.exe -LE:...SDL2lib -LE:ProgramsCode-Blockslib -o binDebugSDL2.exe objDebugmain.o -lSDL2_image -lSDL2_ttf -pg -lgmon -lmingw32 -lSDL2main -lSDL2.dll -lSDL2 -lgdi32 -lwinmm -luser32
你的链接器选项看起来不错。
确保你的代码块在正确的目录中。
i686-w64-mingw32用于32位编译。
x86_64-w64-mingw32用于64位编译。
我和你有同样的问题,我花了很长时间才发现我最初的假设是错误的。
使用以下目录进行32位编译:
搜索目录:编译器C:UsersUSERNAMEProgramsSDLSDL2-2.0.3i686-w64-mingw32include
C:UsersUSERNAMEProgramsSDLSDL2_ttf-2.0.12i686-w64-mingw32include
C:UsersUSERNAMEProgramsSDLSDL2_image-2.0.0i686-w64-mingw32include
链接器
C:UsersUSERNAMEProgramsSDLSDL2-2.0.3i686-w64-mingw32lib
C:UsersUSERNAMEProgramsSDLSDL2_ttf-2.0.12i686-w64-mingw32lib
C:UsersUSERNAMEProgramsSDLSDL2_image-2.0.0i686-w64-mingw32lib
我希望这对你有帮助!
Jensen相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用