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上,就是這個道理。
軟體開發都是盡可能向前兼容的。