我正在尝试使用C从头开始重新制作Pong。我已经构建了游戏,现在我想真正看到它。我正在使用Windows 10和VSCode(最有可能的问题)。
我的tasks.json命令:
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-std=c99",
"-I\"D:\\forrk\\C Game\\raylib-5.0_win64_mingw-w64\\include\"",
"-L\"D:\\forrk\\C Game\\raylib-5.0_win64_mingw-w64\\lib\"",
"-lraylib",
"-o2",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
字符串
销售员:gcc --version
gcc.exe(Rev 2,Built by MSYS 2 project)13.2.0版权所有(C)2023 Free Software Foundation,Inc.这是自由软件;有关复制条件,请参阅源代码。没有任何保证;甚至不保证适销性或适用于特定用途。
这是我每次都会收到的错误消息(是的,我有西班牙语,“compilar archivo activo”意思是“编译活动文件”,“Iniciando la compilación”意思是“开始编译”,“La compilación ha finalizado con errores”意思是“编译完成但有错误”):
Executing task: C/C++: gcc.exe compilar archivo activo
Iniciando la compilación...
D:\forrk\_tool\ucrt64\bin\gcc.exe -fdiagnostics-color=always -g "D:\forrk\C Game\pong.c" -std=c99 -I"D:\forrk\C Game\raylib-5.0_win64_mingw-w64\include" -L"D:\forrk\C Game\raylib-5.0_win64_mingw-w64\lib" -lraylib -o2 -o "D:\forrk\C Game\pong.exe"
D:/forrk/_tool/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: D:\forrk\C Game\raylib-5.0_win64_mingw-w64\lib/libraylib.a(rcore.o):rcore.c:(.text+0x1c494): undefined reference to `timeEndPeriod'
La compilación ha finalizado con errores.
* The terminal process failed to launch (exit code: -1).
* Terminal will be reused by tasks, press any key to close it.
型
我以以下方式安装了raylib:1-将所有内容放入项目文件夹中:IntelliSense可以找到它,但tasks.json不能。2-修复了tasks.json,并将'include'和'lib'文件夹移出了它们的原始文件夹:使用#include时没有错误或警告,但仍然无法编译。3-将'lib'移动到C:中自己的文件夹中(如其他帖子所建议的那样):没有效果
这是VSCode问题吗?我做错了什么吗?我从raylib.com-> github上得到了我的版本,也尝试直接用git克隆,只是为了得到同样的结果。
理想情况下,我想使用C语言的VSCode,而不需要接触Visual Studio上的任何东西(我为C#和Unity设置了Visual Studio)
2条答案
按热度按时间db2dz4w81#
timeEndPeriod
函数是在winmm
库中定义的,因此您需要将-lwinmm
添加到链接器选项集中,位于-lraylib
之后。还要注意,它应该是
-O2
(意味着优化级别2),而不是-o2
(意味着输出文件应该命名为2
):字符串
lnvxswe22#
要解决这个问题,您必须在
gcc
命令中添加更多的-l...
选项(除了-lraylib
之外)(在您的例子中,args
位于`tasks.json中)。以下是相关的错误消息:
字符串
libraylib.a
中的函数(参见错误消息中的完整路径)已经通过-lraylib
选项添加。实际上,在这种情况下,-lX
添加了D:\forrk\C Game\raylib-5.0_win64_mingw-w64\lib\libX.a
a(X
是raylib
)。在D:\forrk\C Game\raylib-5.0_win64_mingw-w64\lib\lib*.a
中搜索timeEndPeriod
,并为找到的每个文件名添加相应的-lX
选项。或者,您可能希望查阅 raylib 文档,了解除了
-lraylib
之外,它还推荐什么。