English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我主要使用的開發環境是Microsoft Visual Studio 2005,
使用語言為C不是C++。
我發現編譯出來的程式,
並無法在每一個使用Windows的電腦上執行,
後來聽說需要需要有安裝 Windows Installer 3.1 與 .NET framework 2.0 才得以執行,
該死的微軟...... ="=|||
本以為用Dev-C++ 4.9.9.2編譯就可以解決這個問題了......
但又發現有些程式碼Microsoft Visual Studio 2005編譯之後是符合設計目的,
Dev-C++編譯卻無法做到......搞的功能剩一半...... Orz
在有些程式碼Dev-C++編譯會出問題的情況下,
又不能要求使用電腦都要裝 Windows Installer 3.1 與 .NET framework 2.0 ,
我整個很苦惱,懇請各位大大有沒有別的方法解決。
或是有別的好用編譯器請告知~

Dev-C++會錯程式碼範例******
malloc(1048576); /* 很莫名的會一口氣吃掉一脫拉庫的虛擬記憶體...... */
ystem("DEL \"C:\\Documents and Settings\\All Users\\「開始」功能表\\程式集\\啟動\\*.lnk\""); /* 這大概是字元的問題 */
***************************

2007-01-06 19:47:59 · 3 個解答 · 發問者 EZ 2 in 電腦與網際網路 程式設計

上面少打了.........
system("DEL "C:\Documents and Settings\All Users\「開始」功能表\程式集\啟動\*.lnk"");
這樣才對.......少了個s

2007-01-06 19:49:23 · update #1

追加補充..........斜線都被去掉了.........Yahoo搞的鬼..............希望高手們不難知道我所指的被去掉的斜線............真是抱歉.......Orz

2007-01-06 19:54:32 · update #2

感謝綿羊兄的回答~
我用過 Release 模式,但還是有無法執行的情況,
且 Debug 模式跟 Release 模式的EXE,
在無法執行時,系統分別給的反應不一樣,
......一個是說需要什麼*.dll 檔,
另一個是......說什麼錯誤之類的。

2007-01-07 07:59:30 · update #3

malloc 我知道會吃掉 1MB ,但奇妙的是,
VC 編譯的EXE檔是漸進式、
有過程的吃"物理記憶體",
而 DC 編譯的EXE卻是執行的瞬間,
就吃掉50%左右的"虛擬記憶體",
沒有過程......然後就停在剩下25%上下的虛擬記憶體,
物理記憶體只少了約1~2%,
整個就是很納悶....... = =|||

2007-01-07 07:59:55 · update #4

嗯......原來要多一條斜線:
system("DEL \\"C:\\\Documents and Settings\\\All Users\\\「開始」功能表\\\程式集\\\啟動\\\*.lnk\\"");

2007-01-07 08:00:16 · update #5

還是被吃掉幾條斜線耶....... Orz

2007-01-07 08:01:01 · update #6

抱歉,上面說的"虛擬記憶體"應該改成"可用交換區",不過我不是很懂這兩者間的差別。

2007-01-07 08:03:20 · update #7

呃.......怎麼斜線這次卻是全都出來了.....變成多很多條....... = "=|||b

2007-01-07 08:04:36 · update #8

回應[心冷]:
我找不到在VC 2005中,Release Mode 的 Compiler Option 在哪耶......
也不知道 Static Link 要去哪設定...... = =|||
難不成我真得去找一套VC 6來裝嗎....... Orz

關於malloc的問題,我很納悶的是同樣一個*.c檔,為什麼DC編譯出來的很詭異,而VC 2005編譯的就很OK啊?....... =3=

話說所謂的 Release Mode 的 Compiler Option ,是指專案屬性嗎?
有看到類似的東西~ = =

2007-01-08 10:45:40 · update #9

對了,我在別的地方有看到說,
去Microsoft下載安裝Microsoft Platform SDK for Windows Server 2003 R2,
用這個編譯的話,執行檔就能在其他Windows平台的電腦上使用,
問題是......載也載了,裝也裝了,可是完全不會用...... Orz
而且我是 Windows XP ,裝這個版本適用嗎?
但我也沒看到 for XP 的就是了..... = =|||

對 Platform SDK 有心得的,
煩請分享一下吧~ = =
當然,如能用VC 2005就解決一切的問題,是最好的~ = =

2007-01-08 10:56:18 · update #10

3 個解答


微軟的 VC 編譯器在編譯時有兩種模式的版本,一個是 Debug (除錯)、一個是 Release (發佈)。使用 Debug 版本設定並編譯後的程式,作業系統本身必須安裝 .NET Framework。
使用 Release 版本設定並編譯後的程式,不管作業系統有無安裝 .NET,皆可正常執行。
M$VS2005 的工作列有設定選項,你設定為 Release 即可。


2007-01-07 01:38:30 補充:
反斜線的問題我向奇摩知識的客服反映過,客服人員認為沒問題,我也覺得很奇怪。

你在輸入時要多加一條反斜線 \\\\
才會變成 \\

malloc(1048576);
這個函式會吃掉 1048576 位元組,1048 KB,1 MB 的記憶體。

2007-01-10 21:38:55 補充:
使用 M$VS2005 或是 M$ 的其他 C 語言編譯器產品,好用的地方在於它有除錯器。如果你弄不到 M$ 的編譯器,可以使用 Dev C++ 或者是 Eclipse ( Eclipse 要另外免費下載外掛 )。

至於吃記憶體的問題,我想也可能與編譯器本身的設計有關。

雖然經 DC 編譯的程式,在配置記憶體上,沒 M$ 好,畢竟只有 M$ 最清楚他們自己設計的作業系統在一些小細節上是如何配置記憶體的。但是 DC 編譯後的程式,不管系統有無更新,是絕對可以執行的。

而使用 M$VS 2005 前就要安裝一些有的沒的,雖然好用,但是吃很多系統資源,降低執行效率。

2007-01-06 20:31:49 · answer #1 · answered by Big_John-tw 7 · 0 0

【亞洲36588合法彩券公司直營 官網: A36588.NET 】

【 最新活動→迎接新會員,首存狂送20% 】

【運動→電子→對戰→現場→彩球 】

【免費服務 →電影區、討論區、KTV歡唱、運動轉播、即時比分、24H客服 】

【亞洲36588合法彩券公司直營 官網: A36588.NET 】

2014-08-17 17:19:25 · answer #2 · answered by Anonymous · 0 0

由於我沒有裝VC 2005
所以我只能跟據我以前用過VC 2003 的經驗回答
VC 的project 有很多種. 妳要完全不依靠 .NET 或不要user 安裝一些dll 必須要有一些設定
1. 一開始建立的 projcet 必須選win32 console mode . 這樣就不會用到.net (not 您的程式還要沒用到.net 的功能. gc 這個keyword 是不能用的)
2. 使用 release mode 建立程式
3. 在release mode 中的 compiler 的option 中必須選擇 static link
使用static link 後. 程式碼會加大. 因為會把C run time library 都link 到.exe 檔中. 所以會長大.

如果上面的設定後. 妳還是無法解決. 有一個更笨的方法. 用VC 6.0 . 因為VC 6.0 的dll 在所有的Windwos OS 安裝後都一定會有. 但是建立的程式一樣要是release mode.

至於DEV C++ 中malloc 1M 的memory 會吃掉很多memory . 我想是您的程式某個地方有問題才會這樣. 在我的單純測試中. 程式只寫了malloc(1048576) 並不會吃掉一大堆的memory.
至於DEV C++ 的字原邊碼問題. sorry 我沒辦法解決.



2007-01-09 10:26:11 補充:
http://tw.myblog.yahoo.com/qqq-001/article?mid=9&prev=-1&next=-1
請參考這篇的設定說明. 使用的compiler 是VC2005 express edition

如圖太小
http://tw.myblog.yahoo.com/qqq-001/photo?pid=7
看上面這張圖(點下去會變大)

2007-01-08 05:22:28 · answer #3 · answered by SiYu 5 · 0 0

fedest.com, questions and answers