在 C++ 编译期间混合 x86 和 x64 静态库
Mixing x86 and x64 static libs during C++ compilation
来自 .Net 背景,并且是 C 和 C++ 的新手,我不确定当其中一些是 64 位而其他仅针对 x86 时链接静态第三方库的含义。
就我而言,我正在使用 FreeGLUT、Glew 和 FreeType 进行一些实验。 Glew 似乎只有 32 位版本。 FreeGLUT 带有 64 位和 32 位库版本,而 FreeType 只有 32 位版本。我想构建我的针对 x64 的应用程序,因为我将使用 8 字节数值做很多工作,但总的来说,我不太了解 x86 与 x64 的编码差异,或者混合来自他们俩。我知道如果我以 x86 为目标构建我的应用程序,那么我显然不能使用 x64 库,但我有一种感觉,反之则不然。我对吗?有什么陷阱要避免吗?鉴于我拥有的 Glew 构建是 32 位的,而 FreeGLUT 构建是 x64,我可以期望它们一起工作吗?
编辑:我发现这个页面很有用:https://msdn.microsoft.com/en-us/library/ew5tede7.aspx - 考虑到活动架构影响内存在堆栈上的分配方式,尝试在同一个堆栈框架中使用两个不同的内存模型是行不通的。
这是不可能的。当您 link 针对库时,平台和体系结构必须匹配。主要问题是内存在 x86 与 x64 中的布局方式
此线程进一步解释 LNK2001 and LNK1120 when compiling a x64 dynamic library linking a x86 static library
来自 .Net 背景,并且是 C 和 C++ 的新手,我不确定当其中一些是 64 位而其他仅针对 x86 时链接静态第三方库的含义。
就我而言,我正在使用 FreeGLUT、Glew 和 FreeType 进行一些实验。 Glew 似乎只有 32 位版本。 FreeGLUT 带有 64 位和 32 位库版本,而 FreeType 只有 32 位版本。我想构建我的针对 x64 的应用程序,因为我将使用 8 字节数值做很多工作,但总的来说,我不太了解 x86 与 x64 的编码差异,或者混合来自他们俩。我知道如果我以 x86 为目标构建我的应用程序,那么我显然不能使用 x64 库,但我有一种感觉,反之则不然。我对吗?有什么陷阱要避免吗?鉴于我拥有的 Glew 构建是 32 位的,而 FreeGLUT 构建是 x64,我可以期望它们一起工作吗?
编辑:我发现这个页面很有用:https://msdn.microsoft.com/en-us/library/ew5tede7.aspx - 考虑到活动架构影响内存在堆栈上的分配方式,尝试在同一个堆栈框架中使用两个不同的内存模型是行不通的。
这是不可能的。当您 link 针对库时,平台和体系结构必须匹配。主要问题是内存在 x86 与 x64 中的布局方式
此线程进一步解释 LNK2001 and LNK1120 when compiling a x64 dynamic library linking a x86 static library