繁体   English   中英

使用VS2008为64位Windows平台编译C ++静态库

[英]compiling C++ static library for 64 bit windows platform using VS2008

在Visual Studio 2008中,如果配置类型是静态库,我在项目属性中看不到链接器选项。 我需要为静态库指定/ MACHINE:x64选项。 我试图在Librarian的命令行选项中指定它。 只有这样我才能构建静态库。 如果我没有指定/ MACHINE编译静态库使用LNK1112失败:模块机器类型'X86'与目标机器类型'x64'冲突(即使我将平台设置为X64用于我的解决方案)。

使用/ MACHINE:X64通过Project-Properties-Librarian指定为命令行,构建了静态库,但是同一解决方案中的其他项目(配置类型:DLL)依赖于静态库,当构建DLL并尝试使用lib中的一个函数我再次得到相同的错误:

致命错误LNK1112:模块机器类型'X86'与目标机器类型'x64'冲突

请建议,如何构建64位静态库

对于它的价值,我遇到了同样的问题。

我有一个编译静态库的项目,并且创建“x64”配置并没有实际定位到x64。 我必须在项目的属性页面中明确地将“/ MACHINE:X64”添加为“Librarian - > Command Line”下的“附加选项”,就像你一样。

我希望visual studio将此设置公开为属性页中的第一类属性,就像动态库一样(在“链接器 - >高级 - >目标机器”下)。 也许我错过了一些东西。

正如Timbo所提到的,您需要确保拥有正在构建的x64配置。 但是,还有其他一些需要注意的问题:

  • 首先要彻底清理你的构建目录,以防你仍然有一些32位目标文件,这会导致混乱
  • 检查项目的中间和输出目录。 如果目标是Debug\\Mylib.lib那么您将遇到问题,因为32位和64位库使用相同的名称。 我更喜欢选择所有配置和所有平台,然后将它们全部重命名为标准,如..\\build\\$(ProjectName)\\$(ConfigurationName).$(PlatformName)
  • 检查配置管理器,在构建解决方案的64位配置时,将其配置为构建项目的64位配置(默认情况下并不总是这样)
  • 错误: module machine type 'X86' conflicts with target machine type 'x64'意味着目标文件已构建为32位,但项目的链接设置使用flag /machine:x64 所以这表明项目配置是32位。
  • 如果对您创建的内容有疑问,请选择一个目标文件并在命令提示符下键入:

    dumpbin /headers myfile.obj | findstr machine

这将向您展示您实际构建的体系结构。

您是否尝试将新项目配置(x64)添加到现有项目中?

您通常不必编辑项目属性以构建64位。 您只需添加配置并确保解决方案配置正确(64位解决方案配置包含64位项目配置)。

您可以通过打开Build-> Configuration Manager来检查这一点。 我的Visual Studio有时会混淆这些设置并使项目无法编译,因此再次检查可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM