1. vs2005,vs2008,vs2010编译同一个c语言项目生成的dll文件为什么不一样大分别是252,380,246KB
优化方式和程度不有
不同的编译器用的是可能是不同的优化方案(同一个编译器不同的设置也会产生不同的结果,比如DeBug和Release)
优化方案取决于编译器开发者的水平.发行编译器时的主流CPU和编译器将要运行的系统平台等因素,
比如DOS时代int_max=0xffff,win32时代int_max=0xffffffff,同样是int变量,所占用的内存空间就不同
再如同样一条C语句:x=x+1;
早期的编译器可能编译成类似这样的结果(这里用结果一词而不用汇编语言,汇编指令,汇编代码之类的词是因为汇编=!机器指令)
mov eax,x
add eax,0x00000001
mov x,eax
而优化的编译器可能会把这条语句编译成和
x+=1;
同样的编译结果:
mov eax,x
inc eax //这条指令的执行速度和占用内存的空间都要小
mov x,eax
///////////////////////////////////////////////////////////////
类似的情况还有很多,因为这个回答是我一个字一个字打出来的,不是在哪个地方Copy的,指所以就不一一列举了,总之:
这些小的差别积少成多,就影响了文件的大小!
2. 用vs2010做了一个dll 但是在win7系统的不同版运行,旗舰版不能运行 专业版可以
确定在运行环境安装了你必要的扩展与支持库。
顺便你貌似弄错地方了,这是Windows,不是编程,帮你转下
望采纳:)
3. c#不同版本编译器生成的dll类库引用的时候一样吗
亲,高版本使用低版本的是一样的,但是低版本使用高版本就有问题了,因为有些东西低版本里没有。你的在vs2008下的dll,在vs2008和2010引用是一样的,但是在vs2010下的dll在vs2008下引用就可能有问题了
4. 如何编译64位dll程序,有几种情况,在32位XP上用VC++6.0或者VS2010该怎么编译64位的dll。
在64位的操作系统上用vs软件编译的dll默认就是64位。
在32位XP上用VC++6.0编译64位的dll,需要安装sdk(最新版本是sdk2003),在开始菜单——sdk——open build environment window——windows server 2003 64-bit build environment——set win svr 2003 x64 build env进入命令行,从命令行调用msdev,将vc选项里的include和lib的第一个默认路径设为sdk目录下64位头文件和库的路径,编译出的dll似乎就是64位的了。这个是从网页上看到的,没实践过。
在32位XP上使用vs2010就简单多了,新建一个项目(解决方案),加入代码,设置X64,编译生成即可。
5. vs2017编译出来的lib和dll,vs2010下使用可以吗
如果是.net,只要框架版本一致就可以,如果是C++,通常要相应的运行库
6. 不同版本的VC编译出来的DLL可以互相调用吗
要看你有没有引用到特别的接口,比如Win7里的新增的API接口,放到dll里,那么放到XP下肯定不可以运行。如果是其他普通的功能就可以互相调用。
比如很多年前开发的软件或游戏也依然可以运行在WIN7上,就是这个道理。
软件开发都是尽可能向前兼容的。