x86 Cygwin ld无法解析x86_64系统上w32api库中的引用

x86 Cygwin ld无法解析x86_64系统上w32api库中的引用,c,linker,cygwin,mingw,mingw-w64,C,Linker,Cygwin,Mingw,Mingw W64,我用setup-x86.exe@Win10 LTSB 2015 x64重新安装了cygwin 我已经安装了gcc核心和w32api运行时软件包 System32文件夹中的opengl32.dll是32位dll 使用x86_64安装cygwinld可以找到对wglCreateContext的引用,而使用x86-not $ gcc -o /tmp/conftest.exe /tmp/conftest.c -lopengl32 /tmp/ccec30zH.o:conftest.c:(.text+0xc

我用setup-x86.exe@Win10 LTSB 2015 x64重新安装了cygwin

我已经安装了
gcc核心
w32api运行时
软件包

System32文件夹中的
opengl32.dll
是32位dll

使用x86_64安装cygwin
ld
可以找到对wglCreateContext的引用,而使用x86-not

$ gcc -o /tmp/conftest.exe /tmp/conftest.c -lopengl32
/tmp/ccec30zH.o:conftest.c:(.text+0xc): undefined reference to `wglCreateContext'
c:

#ifdef __cplusplus
extern "C"
#endif
char wglCreateContext ();
int
main ()
{
return wglCreateContext ();
  ;
  return 0;
}

可能指定
-m32
强制指示它是x86版本?另外,
-Wl,--verbose
选项(其中没有空格)可能会有帮助-这将告诉链接器转储有关如何搜索库的信息。@MichaelBurr,
-m32
没有帮助
-Wl,--verbose
显示没有多大用处,
尝试打开/usr/lib/w32api/libopengl32.a成功
,但
/tmp/ccJlXOvG.o:conftest.c:(.text+0xc):未定义对“wglCreateContext”的引用及其最后一条消息(在与libopengl32或wglCreateContext函数无关的消息之前。很抱歉,响应太晚:如果您仍在处理此问题,此命令的输出是什么:
nm/usr/lib/w32api/libopengl32.a | grep CreateContext
?我认为您可能只有一个64位的
libopengl32.a
库-一个32位的库将具有exported名称<代码>_wglCreateContext@4
。如果您的库导出名称
wglCreateContext
,则它是一个64位库。您需要找到32位库并链接到该库,和/或找出
setup-x86.exe
没有安装它的原因。@MichaelBurr,我有32位w32api运行时软件包,它已安装,我已询问Cygwin开发人员邮件列表上的elopers谈到了这个问题,他们说在32位上这不起作用,要起作用,它需要包含适当的w32api头,所以在autoconf测试中,我需要更改此测试或显式声明它。可能指定
-m32
强制指示它是x86版本?还有
-Wl,--verbose
选项(其中没有空格)可能会有帮助-这将告诉链接器转储有关它如何搜索库的信息。@MichaelBurr,
-m32
没有帮助。
-Wl,--verbose
显示没有多大用处,
尝试打开/usr/lib/w32api/libopengl32。a成功了
,但
/tmp/ccJlXOvG.o:conftest.c:(.text+0xc):对“wglCreateContext”的未定义引用
及其最后一条消息(在与libopengl32或wglCreateContext函数无关的消息之前。很抱歉,响应太晚:如果您仍在处理此问题,此命令的输出是什么:
nm/usr/lib/w32api/libopengl32.a | grep CreateContext
?我认为您可能只有一个64位的
libopengl32.a
库-一个32位的库将具有exported名称<代码>_wglCreateContext@4。如果您的库导出名称
wglCreateContext
,则它是一个64位库。您需要找到32位库并链接到该库,和/或找出
setup-x86.exe
没有安装它的原因。@MichaelBurr,我有32位w32api运行时软件包,它已安装,我已询问Cygwin开发人员邮件列表上的elopers谈到了这个问题,他们说在32位上,这不起作用,要起作用,它需要包含适当的w32api头,所以在autoconf测试中,我需要更改这个测试或显式地声明它。