C++ 代码块和SFML库故障
C++ Codeblocks & SFML library failure
我一直在尝试开始使用SFML库。然而,到目前为止,我的所有尝试都导致了许多错误。下面的代码和我想出的程序一样简单,但仍然给了我三个错误(下面列出的构建日志)
#include <SFML/System.hpp>
int main()
{
sf::sleep(sf::seconds(1.f));
return 0;
}
--------------内部版本:在SFML_TEST_14-3中发布(编译器:GNU GCC编译器)---------------
mingw32-g++.exe -LC:SFML-2.3.2lib -LC:SFML-2.3.2lib -LC:SFML-2.3.2lib -o binReleaseSFML_TEST_1.exe objReleasemain.o -s -lsfml-system-s -lsfml-system-s -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lsfml-graphics-s-d -lsfml-window-s-d -lsfml-system-s-d
C:SFML-2.3.2lib/libsfml-system-s.a(SleepImpl.cpp.obj):SleepImpl.cpp:(.text+0x21): undefined reference to `timeGetDevCaps@8'
C:SFML-2.3.2lib/libsfml-system-s.a(SleepImpl.cpp.obj):SleepImpl.cpp:(.text+0x2f): undefined reference to `timeBeginPeriod@4'
C:SFML-2.3.2lib/libsfml-system-s.a(SleepImpl.cpp.obj):SleepImpl.cpp:(.text+0x50): undefined reference to `timeEndPeriod@4'
collect2: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
3 error(s), 0 warning(s) (0 minute(s), 0 second(s))
我正在为gcc 4.8.1使用代码::块13.12、MinGW 5.1.3和SFML 2.3.2。我试过使用这些旧版本,但什么都没有。
我很确定这些错误与库链接有关,但我不知道错误是从哪里产生的。我已经根据SFML开发人员的教程链接了所有内容;使用,而不更改全局编译器设置。
项目构建信息
我重建了&重新安装了好几次。使用静态和动态形式的SFML.a文件,并尝试使用TDM-GCC。我使用了一个复杂度最低的示例程序。有人能告诉我我做错了什么吗。链接器是找不到某个文件,还是我使用的代码在某种程度上无效?我可能丢失了一些我不知道的.dll吗?
窗口8.1
MinGW目录C:\MinGW
SFML目录C:\SFML2-3-2
他们不久前改变了SFML库的构建方式,因此您需要将它们与它们所依赖的其他库显式链接。这是为了解决人们使用自己版本的这些库的问题。
此处的文档:http://www.sfml-dev.org/tutorials/2.3/start-cb.php确实提供了您需要的信息,尽管可能没有那么明显。
我认为对于这个特定的错误,如果你也链接到-lwinmm
,也许还有-lgdi32
,它就能找到那个符号。
这是我链接的系统库的完整列表:
openal32
vorbisfile
vorbisenc
vorbis
ogg
FLAC
jpeg
freetype
ws2_32
gdi32
opengl32
winmm
如果您没有使用所有SFML功能,则不需要全部功能,例如,第一组功能仅由音频库使用,ws2_32仅用于网络。
请注意,您在其他事项中链接它们-库必须在它们所依赖的库之前列出。对于我的项目设置,我将上述系统库列表设置在项目构建选项的顶层。然后,对于不同的目标(调试、发布),我包括了SFML库。例如,对于调试版本:
sfml-graphics-s-d
sfml-window-s-d
sfml-network-s-d
sfml-system-s-d
sfml-main-d
对于发布版本,名称相同,但没有-d后缀。
然后,确保在链接器设置选项卡上,"策略"设置为将目标选项准备为项目选项,以便将它们插入到为顶级项目配置的库之前的命令行中。
- 分段故障(堆芯转储)矢量
- C++中的动态铸造故障
- 数组的指针从不分段故障
- vscode g++链路故障:体系结构x86_64的未定义符号
- 访问被拒绝后,c++中的故障保护代码
- SFML纹理像播放器
- 如何使用AngelScript注册SFML Vector2运算符
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 如何修复sfml c++代码编译错误
- SFML library: http request
- 落砂模拟碰撞检测C++和SFML
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- SFML RenderWindow打开窗口需要很长时间
- 调试 CUDA MMU 故障
- 矢量下标超出SFML游戏中的范围
- 针对代码::块设置的 SFML 故障排除
- 当在SFML C 中移动一个圆圈时,球后面会有口吃的束缚小故障
- SFML故障代码块
- C++/SFML显示小精灵成员被鼠标点击更改的小故障
- C++ 代码块和SFML库故障