在C ++编译期间混合使用x86和x64静态库

时间:2015-01-15 03:35:26

标签: c++ x86 64-bit static-libraries

来自.Net背景,并且对C和C ++来说还是一个新手,我不确定链接静态第三方库的含义是什么,当其中一些是64位而另一些只是针对x86。 / p>

就我而言,我正在使用FreeGLUT,Glew和FreeType进行一些实验。 Glew似乎只有32位的味道。 FreeGLUT带有64位和32位lib构建,而FreeType只有32位构建。我想构建针对x64的应用程序,因为我将使用8字节数值进行大量工作,但总体而言,我对x86与x64的编码差异不太了解,或者它意味着什么混合两者的库。我知道,如果我构建针对x86的应用程序,那么我显然不能使用x64库,但我感觉反转不正确。我对吗?有什么陷阱可以避免吗?鉴于我拥有的Glew构建是32位但FreeGLUT构建是x64,我可以期望它们一起工作吗?

编辑:我发现这个页面很有用:https://msdn.microsoft.com/en-us/library/ew5tede7.aspx - 假设活动架构影响了堆栈上内存的分配方式,那么尝试使用两个不同的内容是有意义的同一堆栈帧中的内存模型不起作用。

1 个答案:

答案 0 :(得分:1)

这是不可能的。当您链接到库时,平台和体系结构必须匹配。主要问题是如何在x86 vs x64

中布局内存

此主题进一步解释了LNK2001 and LNK1120 when compiling a x64 dynamic library linking a x86 static library