x86 Cygwin ld无法解析x86_64系统上w32api库中的引用
我用setup-x86.exe@Win10 LTSB 2015 x64重新安装了cygwin 我已经安装了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
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): 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测试中,我需要更改这个测试或显式地声明它。