visual studio 2008 编译项目出现层次不穷问题枚举

这篇具有很好参考价值的文章主要介绍了visual studio 2008 编译项目出现层次不穷问题枚举。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C1047 对象或库文件“.lib”是使用与其他对象(如“x64\Release\main.obj”)不同的

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C1047 对象或库文件“.\lib\SceneTempCal.lib”是使用与其他对象(如“x64\Release\main.obj”)不同的编译器版本创建的;请使用相同的编译器重新生成所有对象和库 SceneTest E:\osg\work\ThermalCharacteristics_20220628\SceneTest\LINK 1
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++

1、错误原因

VS2019 或者其他编译器VS2008开发,之前一直用的Debug模式,代码编译正常

最近改为Release模式,一编译就出现这个错误:

LINK : fatal error C1047: 对象或库文件“.lib”是使用与其他对象(如“x64\Release\main.obj”)不同的编译器版本创建的;请使用相同的编译器重新生成所有对象和库

网上搜了一下,说是:

“我这几天也遇到了这个问题,用别人提供的lib,在vs2019下 debug模式可以运行,但release模式下就不行,出现了和你一样的错误。开始我还以为是lib不兼容,最后发现这个lib在LTCG下不能被解析,做如下改正即可:

Release模式下->配置属性->高级->全程序优化->使用链接时间代码生成 将这里的默认项 “使用链接时间代码生成”改为“无全程序优化”。 接下来就可以运行了。
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++

一般低版本生成的lib都是可以被高版本编译器所用的,这个是兼容性的基础,呵呵!”

于是 改属性吧,改为 无全程序优化后,会报个另一个错,心想不能这么一直搞下去啊,肯定是哪不去了。

升级后重编译 也提示这个错,

但是这一次 属性里去掉无全程序优化后 再编译就通过了。

搞不懂,一个lib库 编译起来怎么还有这种情况?

属性->常规->项目默认值->全程序优化 将这里的默认项 “使用链接时间代码生成”改为“无全程序优化”。

这样设置后很多同学貌似解决了这个问题 ,然而并木有包括我。。。

记录一下,但是呢又出现了后面问题。

编译会提示新的错误:
fatal error C1900: “P1”(第“20081201”版)和“P2”(第“20070207”版)之间 Il 不匹配
。。。。。。。。。。。。。。。

继续。。。

原因:链接时使用了某些用更新的编译器编译的LTCG(Link Time Code Generation)的library。之所以x86是正常的,是因为很巧链接时使用的x86 lib是普通lib,而amd64 lib是LTCG lib。

说实话看不懂这是啥库。

解决方案两种:

  • 1)更新当前使用的编译链接工具,使其与lib匹配。当然,这样编译出来的二进制文件可能会有所改变(优化可能不同),所以可能需要重新测试。
  • 2)使用不带LTCG的library

说了等于没说,而且我觉得我这情况也不一样,因为在另外一台机器上编译是OK的。

后来我自己解决方法是下载:vs2008出现这样的错误是由于版本没有升级,在官网下载了一个升级包vs2008sp1,安装后程序运行正确。

这时我才意识到,所用的.lib库是在一个升级版的vs2008上编译得到的,至于在releasedebug模式下出现的错误不一致,我就不明白了。

既然这个lib库是在vs2008上编译的,vs2010应该是可以兼容使用的,我又检查了最开始在vs2010下运行的这个程序的配置,是在release模式下运行的,我改为debug模式运行后正确,检查了releasedebug的配置,发现“项目->属性->配置属性->常规->全程序优化” 在两个模式下不同,将这个选项改为 “无全程序优化”,之后程序就可以在两种模式下正常运行了。

通过这次调试得到一个结论,引用别人lib或者dll的时候,出现连接问题一般都是由于当前编译器版本过低,向上无法兼容;另外一些原因是编译器的设置问题,导致无法正确解析库文件。

vs2008中文 sp1版本下载地址:sp1中文版地址。

vs2008 英文sp1版本下载地址:sp1英文版地址。

2、意外的预编译头错误,只需重新运行编译器就可能修复此问题

昨天还好好的,今天打开vs2008,莫名就出现“意外的预编译头错误,只需重新运行编译器就可能修复此问题”。清理,重新编译,不行;重启编译器,清理,重新编译,还不行;最后试试,重启电脑,打开工程,清理,重新编译,又可以了。

官方给的解决方法:

  • 方法 1:

    • 禁用/analyze编译器选项,则它会被启用。
  • 方法 2:

    • 开始清理生成。
  • 方法 3:

    • 重新启动计算机。
  • 方法 4:

  • 禁用创建/使用预编译头的编译器选项。

注意这些方法不能保证正常工作。即使您使用这些方法之一,您可能仍会遇到此问题。

我的解决方案,重启电脑…

3、 warning LNK4099: 未找到 PDB“vc90.pdb”(使用“…/…/lib\SafeStored.lib”或在“f:\sdologin_code\trunk\bin\Debug\pdb\vc90.pdb”中寻找);正在链接对象,如同没有调试信息一样

LNK4099警告通常表示编译器无法找到与您的项目相关的调试信息文件(.pdb文件)。在您的情况下,它正在尝试查找名为"vc90.pdb"的文件。这个问题通常与编译器的调试信息生成设置有关。
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++
当多个Project是分开编译的,主项目和子项目的pdb文件名相同(默认都是vc90.pdb或vc100.pdb)从而造成找不到调试信息,解决的办法是修改车险数据库文件名vc90.pdb为【项目名称.pdb】,如下所示:

一、在VS2008工程中,经常出现warning LNK4099: 未找到 PDB“vc90.pdb等问题,解决办法如下:

  1. 在项目属性—C/C++—输出文件—程序数据库文件名后面填写$(IntDir)\vc80.pdb。

  2. 在项目属性—连接器—调试—生成调试信息后面改成“否”。

举例: “warning LNK4099: 未找到 PDB“vc120.pdb”(使用“sqlite3d.lib(sqlite3secure.obj)”或在“D:\test\Debug\vc120.pdb”中寻找);正在链接对象,如同没有调试信息一样”。

使用VC时链接了第三方静态库, 并且第三方静态库(一般是开源的三方库)是在一个solution下的多个project, 当然,

网上基本都是这么回答的, 其实本质原因是因为这些开源库一般都会通过各种方式修改solution和project的默认路径

把二进制生成到同一个目录下, 比如lib, 而我们自己平时简单的静态库工程是不怎么修改默认工程配置的.由于每个

开源库的作者有自己的工程组织方式, 但导致LNK4099的最终原因无非是PDB路径问题。

解决方案

  • a. 如果确认不需要PDB, 即不需要调试开源库, 完全可以在设置里将/Zi或/ZI去掉, 这样即能消除warning也能提升开源库编译速度 。

  • b. 如果需要调试开源库, 方法也不复杂

    • b.1. 将开源库project里的C/C+±>General->Debug Information Format 设置为Zi或ZI(两者区别请自行google, Zi就够用了, 只是高版本的VS默认都是ZI)
    • b.2. 然后在C/C+±>Output Files->Pragram Database File Name 设置为(OutDir)(OutDir)(TargetName).pdb, (有些2B开源库这里设置的跟VS默认的是一样的比如(IntDir)vc(IntDir)vc(PlatformToolsetVersion).pdb, 但把IntDir改成了同一个目录, 每个project生成出来的pdb名字路径都是一致的, 当然就会出问题), 这里需要注意的是, 一定要确保(OutDir)(OutDir)(TargetName)是有意义的, 个别开源库完全不用vs自带的宏, 甚至个别开源库需要configure之后才生产vc project, 甚至是绝对路径, 但你所要确保的是, 目录必须跟生成的.lib是同一个, 文件名(不包括扩展名)必须是和生成的xxx.lib的xxx是一致的. 之后你要做的就是把每个project的debug&release都按照如上改好再编译就ok了。

4、VS2008中编译通过,但调试时出现“未使用调试信息生成二进制文件”的问题

Debug模式,运行时完全正常,但是一调试就出现对话框,显示出错信息:

“无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”

VC项目是空项目。发现其他的项目都可以调试,就“空项目”不行。

解决方法:

首先打开菜单 项目->项目属性页

  • 1。选择 配置属性->链接器->调试->生成调试信息 改为 是 。
  • 2。选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI) 。
  • 3。选择 配置属性->C/C++ ->优化->优化 改为 禁用(/Od) 。

5、vs2008为什么有些解决方案x64不能生成,显示已跳过,也不能编译?打开属性,总是报错

查下“生成”-> “配置管理器”-> “活动解决方案平台”是否选择的“win32”或者x64。

最近准备编译64位版本的程序。因为之前已经安装了VS 2008 或者更早的版本,开始以为只是使用VS 2008的安装文件添加功能即可,后来发现没这么简单。

坑啊,原来vs2008或者更早以前装x64环境要自己勾选,made,这个问题导致我花了一整天时间才能发现。编译时选择”重新生成解决方案“,会出现,”已跳过生成: 项目”, 不编译, 也不报错。

1>------ 已跳过生成: 项目: INSTALL, 配置: Release x64 ------
1>没有为此解决方案配置选中要生成的项目
========== 生成: 成功 0 个,失败 0 个,最新 8 个,跳过 1 个 ==========
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++

安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器。虽然标题写着如何在VS2008中编译,但其实vs2005也是类似。如果在选择平台的下拉列表里找不到x64,可能是没有安装x64编译支持。在VS安装程序里再装上就可以了。

原本的是没有勾选的…。
visual studio 2008 编译项目出现层次不穷问题枚举,C++,visual studio,c++

6、fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突32位可以编译 64位1>.\Debug\dxstdafx.obj : fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突

  • 这个错误消息表明你正在尝试在一个32位环境下编译一个64位目标,导致了链接器错误。要解决这个问题,你需要确保编译器和链接器的设置匹配。以下是一些解决方法:

    • 更改项目配置为64位:

      • 打开你的项目(Visual Studio或其他IDE)。
        转到项目设置或属性。
        在配置管理器中,确保你的项目配置为64位(x64)而不是32位(x86)。
        重新编译你的项目。
    • 检查所有依赖项:

      • 如果你的项目依赖于其他库或模块,请确保这些库也是64位的版本。
        如果你使用了第三方库,确保你使用了与你的目标平台匹配的库版本。
    • 更新编译选项:

      • 检查你的项目的编译选项,确保它们与64位编译兼容。这包括编译器标志和预处理器定义。
    • 使用条件编译:

      • 如果你需要在32位和64位目标之间切换,可以使用条件编译指令来区分不同的平台。例如,你可以使用#ifdef和#ifndef来根据不同的目标设置不同的代码路径。
    • 重新安装工具链:

      • 如果你使用的是Visual Studio,有时候重新安装Visual Studio可以解决一些配置问题。
        检查操作系统:

确保你的操作系统本身支持64位应用程序运行。如果你的操作系统是64位的,那么你应该能够编译和运行64位应用程序。清理解决方案重新生成。文章来源地址https://www.toymoban.com/news/detail-696740.html

到了这里,关于visual studio 2008 编译项目出现层次不穷问题枚举的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • detour编译问题及导入visual studio

    Detours是经过微软认证的一个开源Hook库,Detours在GitHub上,网址为 https://github.com/Microsoft/Detours 注意版本不一样的话也是会出问题的,因为我之前是vs2022的所以之前的detours.lib不能使用,必须用对应版本的x64 Native Tools Command Prompt for VS工具进行编译 我这里使用的visual studio2019版本

    2024年02月11日
    浏览(42)
  • visual studio智能提示出现慢的问题解决办法

    Visual Studio智能提示出现慢的问题解决办法如下: 清理Visual Studio缓存。通过\\\"文件\\\"→\\\"打开文件或项目\\\"→\\\"取消\\\"→\\\"是,清理所有项目\\\"进行清理。 清理Visual Studio实例。通过\\\"文件\\\"→\\\"关闭解决方案\\\"进行清理。 重置用户数据。打开Visual Studio的开发人员命令提示符,输入 devenv.exe

    2024年02月08日
    浏览(56)
  • Visual Studio 2022 右键单击项目没有出现View | View Class Diagram(Visual Studio 无法使用类设计器)

    当我们在Solution Explorer窗口右键单击项目时,快捷菜单中没有出现“查看”,或者出现了“查看”,但是“查看”里没有View Class Diagram。 首先你要确保你安装了类设计器。 其次就与你的项目有关了,类设计器不是所有项目都可以用滴。 类设计器在.NET Core项目中是无法使用的

    2024年02月11日
    浏览(59)
  • Visual Studio将C#项目编译成EXE可执行程序

    经常看文章时会收获不少实用工具,有的在github上是编译好的,有的则是未编译的项目文件。所以经常会使用Visual Studio编译项目文件成exe可执行程序,以下为编译的流程。 第一步,从github上下载项目文件,举个例子,如工具SharpWifiGrabber SharpWifiGrabber https://github.com/r3nhat/Shar

    2024年02月07日
    浏览(51)
  • UE4无法编译项目。是否要在Visual Studio中打开

    一开始是没装Visual Studio。安装完成后想创建C++项目出现如下报错。 无法编译该项目。要在Visual Studio中打开它吗? Running E:/Epic Games/UE_4.27/Engine/Binaries/DotNET/UnrealBuildTool.exe Development Win64 -Project=\\\"E:/Epic Games/UE_4.27/UnrealProjects/我的项目4/我的项目4.uproject\\\" -TargetType=Editor -Progress -NoE

    2024年02月03日
    浏览(62)
  • Visual Studio 编译项目出错:错误 MSB4018 “GenerateStaticWebAsssetsPropsFile”任务意外失败

    最近因VS2022从V16升级到版本 17.4.0后,项目忽然编译错误,后经反复排错发现:项目路径减短项目就不会出错。出错内容如下: 严重性    代码    说明    项目    文件    行    禁止显示状态 错误    MSB4018    “GenerateStaticWebAsssetsPropsFile”任务意外失败 。 System.

    2024年02月15日
    浏览(45)
  • Visual Studio编译器编译时出现“请选择有效启动项”问题的解决办法

    使用visual studio打开的是一个文件夹并不是一个项目,找不到启动项是正常的。 我们使用visual studio从现有代码创建项目即可。 上面如果默认创建Windows应用程序项目运行项目时就可能会出现 错误 LNK2019 无法解析的外部符号 _WinMain@16,函数 \\\"int __cdecl invoke_main(void)\\\" (?invoke_main@@

    2024年02月11日
    浏览(102)
  • Visual Studio 2019程序运行出现‘Access violation reading location‘的问题

    在Visual Studio 2019的C++程序调试运行中出现’Access violation reading location’的问题, Unhandled exception at 0xxxxxxxxx (xxxx.dll) in xxxx.exe: 0xxxxxxxxx: Access violation reading location 0xxxxxxxxxx ,进行了解决。 在Visual Studio 2019的C++工程,编译是没有问题的,但是在程序调试运行时经常会出现’A

    2024年02月08日
    浏览(82)
  • cuda11.7+visual studio 2022 编译时出现MSB3721问题

    公司项目更新了vs和cuda,我更新完之后发现: C:codeSSRImplDevgEcOG.Common.XrayRegistration_nc“C:Program FilesNVIDIA GPU Computing ToolkitCUDAv11.7binnvcc.exe” -gencode=arch=compute_86,code=“sm_86,compute_86” --use-local-env -ccbin “C:Program FilesMicrosoft Visual Studio2022CommunityVCToolsMSVC14.34.31933binHostX

    2024年02月04日
    浏览(55)
  • visual studio 2022 头文件和库目录问题造成的编译失败

    新安装visual studio 2022后,在一个简单工程上编译测试中,遇到标准头文件(new.h)报错,详情如下: 经验证和对比visual studio 2019,发现visual studio 2022以下sdk路径有一个明显差异。详情如下所示。 visual studio 2019 安装后的默认路径如下 而 visual studio 2022路径如下 库目录也一样不

    2023年04月08日
    浏览(99)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包