我最近在笔记本电脑上安装了MinGW和CSFML,然后运行:

gcc shaders.c -csfml-system -csfml-graphics


我收到一个错误:

...\ccV1NsAK.o:shaders.c:(.text+0x247):' undefined reference to _imp__sfBlendAlpha'


我该如何解决?
亲切的问候,
波士顿布鲁克斯。



更新1
我已经尝试过安装到不同的搜索路径,但是无法正常工作。我重新安装了MinGW,并将文件从CSFML包粘贴到默认路径。现在我得到:

gcc shaders.c -lcsfml-system -lcsfml-window -lcsfml-graphics
C:\Users\bbroo\AppData\Local\Temp\cc9QM4Nx.o:shaders.c:(.text+0x2d8): undefined reference to '_imp__sfBlendAlpha'
C:\Users\bbroo\AppData\Local\Temp\cc9QM4Nx.o:shaders.c:(.text+0x318): undefined reference to '_imp__sfTransform_Identity'
collect2.exe: error: ld returned 1 exit status




更新2
我将CSFML复制到我的主文件夹中。我得到:

$ gcc -B ~/CSFML -Ld: ~/CSFML shaders.c  -lcsfml-system -lcsfml-window -lcsfml-graphics
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find C:/MinGW/msys/1.0/home/bbroo/CSFML: Permission denied
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lcsfml-system
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lcsfml-window
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32/bin/ld.exe: cannot find -lcsfml-graphics
collect2.exe: error: ld returned 1 exit status


可以访问头文件,但是点-a文件“权限被拒绝”
如何使用MSYS将CSFML中所有文件上的所有用户的权限设置为“读-写-执行”?

如果我使用C:\ SFML,同样的问题



更新3
当我将文件解压缩到默认路径时,在我的dot-a文件所在的文件夹中会生成一个子文件夹。它包含几个dot-a文件和一个自述文件。

将此README文件复制到仅GCC头文件的目录中
当fixincludes由GCC的makefile运行时:


  此目录中的许多文件是从
  通过fixincludes流程获取标准系统头文件。他们是
  特定于系统,并且不能在任何其他类型的系统上运行。他们
  也不是海湾合作委员会的一部分。我们必须这样做的原因是
  GCC需要ANSI C标头,许多供应商提供与ANSI不兼容的
  标头。
  
  因为这是一个自动化过程,所以有时标题会被“修复”
  从严格意义上讲,不需要修复。只要没有破损
  通过该过程,这只是不幸的附带不便。
  如果不是很“麻烦”,我们想纠正它。




更新4
没有链接的编译工作正常,但单独链接却行不通:

bbroo@DESKTOP-1F1J3SM ~/Shaders
$ ld shaders.o libcsfml-system.a libcsfml-window.a libcsfml-graphics.a
shaders.o:shaders.c:(.text+0x10): undefined reference to `__main'
shaders.o:shaders.c:(.text+0x2d8): undefined reference to `_imp__sfBlendAlpha'
shaders.o:shaders.c:(.text+0x318): undefined reference to `_imp__sfTransform_Identity'
shaders.o:shaders.c:(.text+0x4bc): undefined reference to `sleep'




更新5
现在我得到:

bbroo@DESKTOP-1F1J3SM ~/Shaders
$ ld shaders.o libcsfml-system.a libcsfml-window.a libcsfml-graphics.a csfml-system-2.dll csfml-window-2.dll csfml-graphics-2.dll
shaders.o:shaders.c:(.text+0x10): undefined reference to `__main'
shaders.o:shaders.c:(.text+0x4bc): undefined reference to `sleep'

最佳答案

gcc shaders.c libcsfml-system.a libcsfml-window.a libcsfml-graphics.a csfml-system-2.dll csfml-window-2.dll csfml-graphics-2.dll

这个对我有用。

关于c - 对_imp_sfBlendAlpha的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44216266/

10-11 15:20