在Windows 7上通过cgo安装使用SDL2的软件包时出现问题

在Windows 7上通过cgo安装使用SDL2的软件包时出现问题,go,installation,windows-7-x64,cgo,Go,Installation,Windows 7 X64,Cgo,我在使用Visual Studio代码为golang安装SDL2时遇到问题 我试图得到包裹: "C:\Users\Bob\go\src\flappyGopher>go get -v github.com/veandco/go-sdl2/sdl github.com/veandco/go-sdl2/sdl # github.com/veandco/go-sdl2/sdl In file included from ..\github.com\veandco\go-sdl2\sdl\

我在使用Visual Studio代码为golang安装SDL2时遇到问题

我试图得到包裹:

"C:\Users\Bob\go\src\flappyGopher>go get -v github.com/veandco/go-sdl2/sdl
github.com/veandco/go-sdl2/sdl
# github.com/veandco/go-sdl2/sdl
In file included from ..\github.com\veandco\go-sdl2\sdl\audio.go:4:0:
./sdl_wrapper.h:2:23: fatal error: SDL2/SDL.h: No such file or directory
compilation terminated."
我使用了这本手册:

我还有环境变量:

CGO_CFLAGS C:\MinGW64\mingw64\include
GOPATH C:\Users\Bob\go
GOROOT C:\Go\
PATH ... C:\MinGW64\mingw64\x86_64-w64-mingw32\bin;C:\MinGW64\mingw64\bin;C:\Users\Bob\Downloads\SDL2-2.0.8\x86_64-w64-mingw32\include\SDL2
编辑:gcc输出看起来像一团乱

C:\Users\Bob>gcc -xc -E -v -
Using built-in specs.
COLLECT_GCC=gcc
Target: x86_64-w64-mingw32
Configured with: ../../../src/gcc-5.1.0/configure --build=x86_64-w64-  mingw32 --e
nable-targets=all --enable-languages=ada,c,c++,fortran,lto,objc,obj-c++ --enable
-libgomp --enable-lto --enable-graphite --enable-cxx-flags=-DWINPTHREAD_STATIC -
-disable-build-with-cxx --disable-build-poststage1-with-cxx --enable-libstdcxx-d
ebug --enable-threads=posix --enable-version-specific-runtime-libs --enable-full
y-dynamic-string --enable-libstdcxx-threads --enable-libstdcxx-time --with-gnu-l
d --disable-werror --disable-nls --disable-win32-registry --prefix=/mingw64tdm -
-with-local-prefix=/mingw64tdm --with-pkgversion=tdm64-1 --with-bugurl=http://td
m-gcc.tdragon.net/bugs
Thread model: posix
gcc version 5.1.0 (tdm64-1)
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
 C:/Program Files/TDM-GCC-64/bin/../libexec/gcc/x86_64-w64-mingw32/5.1.0/cc1.exe
 -E -quiet -v -iprefix C:/Program Files/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-min
gw32/5.1.0/ -D_REENTRANT - -mtune=generic -march=x86-64
ignoring duplicate directory "C:/Program Files/TDM-GCC-64/lib/gcc/../../lib/gcc/
x86_64-w64-mingw32/5.1.0/include"
ignoring duplicate directory "C:/Program Files/TDM-GCC-64/lib/gcc/../../lib/gcc/
x86_64-w64-mingw32/5.1.0/../../../../include"
ignoring duplicate directory "C:/Program Files/TDM-GCC-64/lib/gcc/../../lib/gcc/
x86_64-w64-mingw32/5.1.0/include-fixed"
ignoring duplicate directory "C:/Program Files/TDM-GCC-64/lib/gcc/../../lib/gcc/
x86_64-w64-mingw32/5.1.0/../../../../x86_64-w64-mingw32/include"
#include "..." search starts here:
#include <...> search starts here:
 C:/Program Files/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include
 C:/Program Files/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../..
/include
 C:/Program Files/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/include-fixed
  C:/Program Files/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/5.1.0/../../../..
/x86_64-w64-mingw32/include
End of search list.
C:\Users\Bob>gcc-xc-E-v-
使用内置规格。
收集\u GCC=GCC
目标:x86_64-w64-mingw32
配置为:../../../src/gcc-5.1.0/configure--build=x86_64-w64-mingw32--e
nabal=所有ALL——启用语言=艾达、C、C++、FORTRAN、LTO、Objc、Obj-C++ +启用
-libgomp--enable lto--enable graphite--enable cxx flags=-DWINPTHREAD_STATIC-
-使用cxx禁用生成--disable-build-poststage1-with-cxx--enable-libstdcxx-d
ebug--enable threads=posix--enable版本特定的运行库libs--enable full
y-dynamic-string--启用libstdcxx线程--启用libstdcxx时间--使用-gnu-l
d--禁用werror--禁用nls--禁用win32注册表--前缀=/mingw64tdm-
-带有本地前缀=/mingw64tdm——带有pkgversion=tdm64-1——带有bugurl=http://td
m-gcc.tdragon.net/bugs
线程模型:posix
gcc版本5.1.0(tdm64-1)
COLLECT\u GCC\u OPTIONS='-E'-v'-mtune=generic'-march=x86-64'
C:/Program Files/TDM-GCC-64/bin/。/libexec/GCC/x86_64-w64-mingw32/5.1.0/cc1.exe
-E-quiet-v-iprefix C:/Program Files/TDM-GCC-64/bin/。/lib/GCC/x86_64-w64-min
gw32/5.1.0/-D_可重入--mtune=generic-march=x86-64
忽略重复目录“C:/Program Files/TDM-GCC-64/lib/GCC/。/../lib/GCC/
x86_64-w64-mingw32/5.1.0/include“
忽略重复目录“C:/Program Files/TDM-GCC-64/lib/GCC/。/../lib/GCC/
x86_64-w64-mingw32/5.1.0/../../../../../../../include”
忽略重复目录“C:/Program Files/TDM-GCC-64/lib/GCC/。/../lib/GCC/
x86_64-w64-mingw32/5.1.0/包括固定的“
忽略重复目录“C:/Program Files/TDM-GCC-64/lib/GCC/。/../lib/GCC/
x86_64-w64-mingw32/5.1.0/../../../../../../../x86_64-w64-mingw32/include”
#包括“…”搜索从这里开始:
#包括搜索从这里开始:
C:/Program Files/TDM-GCC-64/bin/。/lib/GCC/x86_64-w64-mingw32/5.1.0/include
C:/Program Files/TDM-GCC-64/bin/./lib/GCC/x86_64-w64-mingw32/5.1.0/../../../../../。。
/包括
C:/Program Files/TDM-GCC-64/bin/。/lib/GCC/x86_64-w64-mingw32/5.1.0/include-fixed
C:/Program Files/TDM-GCC-64/bin/./lib/GCC/x86_64-w64-mingw32/5.1.0/../../../../../。。
/x86_64-w64-mingw32/包括
搜索列表结束。
请参阅

原因是
go install
试图编译一些 github.com\veandco\go-sdl2包的代码 想使用 libsdl2的
libsdl2
库的

你需要做出决定 可供编译器使用

找出C编译器希望在哪里找到include(头) 文件,请参阅


这就是C的工作原理。要在其他C代码中使用编译库,编译器 通常需要知道所提供类型和函数的定义 在那个图书馆旁边。与Go库相反,此类库的格式通常不会在其元数据中嵌入类型信息,因此编译器 需要从某个地方获取信息。在C和C++世界中,这个信息通常保存在所谓的“包含(也:头)”文件中。 这些都是通过使用所谓的预处理器包含到
用于构建库的代码和使用库的代码。

在windows命令提示符下,需要设置'CGO_FLAGS=-IC:\Users\Bob\Downloads\SDL2-2.0.8\x86_64-w64-mingw32\include',然后执行go get…我已经尝试过了,但仍然是相同的错误消息C:\Users\Bob>set CGO_FLAGS=-IC:\Users\Bob\Downloads\SDL2-2.0.8\x86\u 64-w64-mingw3 2\include C:\Users\Bob>go get-v github.com/veandco/go-SDL2/sdl github.com/go-SDL2/sdl/sdl\github.com/veandco/go-sdl/go-sdl/go-sdl/go-sdl,包含在go\src\github.com\veandco\go-go-SDL2\SDL2\sdl\sdl:23的文件中错误:SDL2/SDL.h:没有终止此类文件或目录编译。我必须知道C如何使用Go吗?我将在第一次发布中更新gcc输出