vs2010查看多个程序_三、VS2010的使用介绍

2023-09-20 17:56

一、引言

在vs多项目解决方案中,有时候生成项目时需要编译所有子项目,当子项目数量多的时候,特别费时。而且有时候编译过程还产生一些奇怪的错误,比如: 多次编译后,项目又可以正常运行,真是头疼。虽然项目最终可以运行起来,但是问题不解决也是特别影响开发效率,于是决定将这些问题找出来。

二、分析

找到的相关博客也有类似的问题: 编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll” 其中EvComPortDeviced.lib 应该是该项目的输出文件,而此时却显示无法打开该文件。

觉得非常匪夷所思 T_T

明明是我要输出的文件,你却告诉我无法打开,这是因为什么原因呢?

原作者说是可能是因为EvComPortDeviced.lib 被其他程序占用了导致的这个文件不能被打开更改。然而到底是什么程序占用了这个文件呢?

查看任务管理器的时候发现Vs开了多个编译进程,同时编译多个项目。 猜想应该就是我原本的输出目录下已经存在了EvComPortDeviced.lib文件,所以同时编译多个项目的时候,可能有的项目依赖了该文件,就直接从输出目录中使用了这个文件。而这个文件所在的工程也在同时编译,当生成该文件时,发现文件被占用,所以就报错了。 为了证明这个猜想,把vs同时编译数量设为1。 再次编译就不会出现这个问题了。但是仍然需要重新编译多个子项目。于是又有问题,为什么EvComPortDeviced.lib所在的项目并没有更改,而每次编译的时候却一直需要重新生成该项目呢?

项目需要重新编译,说明该项目应该是已经过期了。但是我没有改动这个项目,为什么会存在过期问题呢? 参考VS2010每次调试都出现“此项目已经过期”提示 按原文的步骤操作,在DbgView中获取的信息类似

[36184] Project 'D:\MyCode\Study\HelloWorld\HelloWorld.vcxproj' not up to date because build input 'D:\MYCODE\STUDY\HELLOWORLD\TARGETVER.H'; is missing.

说是EvComPortDeviced工程无法更新,因为COMMONTOOLDLLD.lib已经改变了。也就是说EvComPortDeviced的依赖项改变了,所以这个工程也应该需要重新生成。而COMMONTOOLDLLD的工程我也没有改变过,为什么也需要重新生成?继续寻找COMMONTOOLDLLD的问题,结果发现COMMONTOOLDLLD的问题是说EvComPortDeviced.lib被更改了。也就是循环包含了。

查看代码,修改循环包含的问题,把项目的依赖项选项也设置好后,问题解决。

三、结语

有时候粗心大意,可能出现项目重复包含问题,当输出目录下已经存在原有的一个工程生成的lib文件,后续如果出现循环包含,编译器输出的信息有时候也不足以分析出问题。其实这个问题重新生成解决方案应该就能发现的了问题吧。

上节主要讲了原码、反码和补码的知识点。这节主要讲解VS2010的使用。

? ? ? ?开发过程中的几个基本概念:源程序、目标程序和翻译程序。

? ? ? ??源程序:是我们用各种语言写的程序,我们常说写代码其实就是在写源程序。源程序可以是汇编语言或者高级语言等其他语言所写。

? ? ? ??目标程序:是经过翻译之后生成的程序,可以是机器语言表示的,也可以是汇编语言或其他中间语言表示的。我们写程序编译之后的obj文件就是目标程序。目标程序理论说应该能运行,但是程序运行离不开操作系统的支持,它必须经过装载和链接,生成可执行程序(exe文件)才能运行。

?

? ? ? ??翻译程序:就是把源程序翻译成目标程序的程序。它有三种类型:汇编程序、编译程序和解释程序。

? ? ? ??汇编程序是把用汇编语言程序翻译成目标程序的程序。

编译程序是把高级语言程序翻译成目标程序的程序,C++是高级语言,当然需要编译程序。

解释程序也是将高级语言翻译成目标程序,但它是输入一句,翻译一句,执行一句,直到整个源程序被翻译执行完毕,效率比较低。

? ? ?http://m.gsm-guard.net/software/27.html

打开vs2010命令提示窗口,输入ILDasm Compile.exe 可以打开。

打开之后参照下面链接,打开要查看的程序集.dll 或.exe文件,双击“MANIFEST"即可查看。

http://m.gsm-guard.net/s/blog_64b2379801014zqs.html

转载于:https://m.gsm-guard.net/1777783/1319914