[英]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配置。 但是,还有其他一些需要注意的问题:
Debug\\Mylib.lib
那么您将遇到问题,因为32位和64位库使用相同的名称。 我更喜欢选择所有配置和所有平台,然后将它们全部重命名为标准,如..\\build\\$(ProjectName)\\$(ConfigurationName).$(PlatformName)
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.