[問題] 發佈程式到其他電腦上

看板C_and_CPP (C/C++)作者 (CA)時間16年前 (2009/07/03 21:14), 編輯推噓7(7025)
留言32則, 3人參與, 最新討論串1/3 (看更多)
我的程式是用 VC 2008 編的 現在我要把執行檔打包送出 可是在 target 上一直無法執行 我有在 target 上用 DependencyWalker 看 沒有缺 dll 但是一直出現: Error: The Side-by-Side configuration information for "檔名" contains errors. 檔名裡是我自己用 VC 編出的 binary 我試過很多方法了 包括複製 manifest 到目錄裡 都沒用 裝 redist.exe 有機會解決這個問題 可是這個方法需要管理者權限, 不是每台電腦都有裝 我也有看過 MSDN 上關於 XCopy 的方法 一樣沒用 .... 我想問到底怎樣發佈才能正常執行 PS: 也許有人會建議我改用 MinGW, 不過有些組件 MinGW 無法移植 因此不考慮換其他 toolchain -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.213.3

07/03 22:01, , 1F
Project->Property->Config Properties->C++->Code Gen
07/03 22:01, 1F

07/03 22:02, , 2F
Runtime Lib => 選沒有dll的那兩個的其中一個試試....
07/03 22:02, 2F

07/03 22:03, , 3F
Debug版就選 /MTd, Release版就選 /MT, 猜是這個問題:)
07/03 22:03, 3F

07/03 22:04, , 4F
這個預設模式是小弟我很度爛VC++2003以後版本的一點....
07/03 22:04, 4F

07/03 22:05, , 5F
這問題連build dll也會遇到; 不然就像您說的裝redist了
07/03 22:05, 5F

07/03 22:06, , 6F
如果有用顯示連結呼叫DLL,在Dependency Walker看不出相依性
07/03 22:06, 6F

07/03 22:10, , 7F
拋棄 dll 我就不能用 plugin ...
07/03 22:10, 7F

07/03 22:11, , 8F
而且弄成 static link 只能算 work around 吧...
07/03 22:11, 8F

07/03 22:12, , 9F
然後這和手動呼叫DLL 沒啥關係, 因為連 startup 都不行
07/03 22:12, 9F

07/03 22:26, , 10F
我只會簡單的偵錯,在懷疑有錯誤想設中斷點的地方,都加一行
07/03 22:26, 10F

07/03 22:26, , 11F
類似cout<<"bp1"; 然後不能執行的電腦用OllyDbg搜尋這些字串
07/03 22:26, 11F

07/03 22:27, , 12F
下中斷點,跑反組譯的指令單步偵錯看是哪部份問題。
07/03 22:27, 12F

07/03 22:28, , 13F
另外你說的 side-by-side 錯誤,應該是 dep. walker 給的,那
07/03 22:28, 13F

07/03 22:29, , 14F
直接執行會出現的錯誤是寫怎樣呢?
07/03 22:29, 14F

07/03 22:51, , 15F
這個應用程式設定不正確 重新安裝...可以解決問題
07/03 22:51, 15F

07/03 22:51, , 16F
我不是用中文版OS,不過應該是這樣
07/03 22:51, 16F

07/03 22:53, , 17F
基本上debuger應該也沒用...因為根本沒有執行
07/03 22:53, 17F

07/03 23:17, , 18F
Err~請問小弟說的那個方法重build binary沒用嗎!?
07/03 23:17, 18F

07/03 23:35, , 19F
不只.exe檔喔, 有自己建的.dll也都要這樣....@_@"
07/03 23:35, 19F

07/03 23:36, , 20F
http://www.thecodeway.com/blog/?p=21 根據這篇文章,應該就
07/03 23:36, 20F

07/03 23:36, , 21F
是dll的問題,他提供的第三個方法,複製『對應』的dll你試過嗎
07/03 23:36, 21F

07/03 23:42, , 22F
啊~~我看懂了....Orz 可以的話是z大的方法三比較好....
07/03 23:42, 22F

07/03 23:43, , 23F
但是, 我記得用manifest這東西, 以後VC sp一裝什麼的,
07/03 23:43, 23F

07/03 23:44, , 24F
很容易只是因為個dll version的問題又讓程式不能run了.
07/03 23:44, 24F

07/03 23:44, , 25F
用static link除了程式會變肥一點, 目前也想不出有什麼
07/03 23:44, 25F

07/03 23:45, , 26F
壞處@_@" 事實上小弟反而覺得, 除非是OS/DX這類平台保證
07/03 23:45, 26F

07/03 23:46, , 27F
不能在編譯的時候關掉這個功能嗎,沒別台電腦可以測
07/03 23:46, 27F

07/03 23:47, , 28F
的.dll, 小弟我寧可都用static link來處理這個問題Orz
07/03 23:47, 28F

07/04 00:03, , 29F
我在本文裡就有提到我有複製 manifest
07/04 00:03, 29F

07/04 00:03, , 30F
dependency walker 也顯示沒有缺失的 dll
07/04 00:03, 30F

07/04 00:04, , 31F
問題在於我無法載入那些複製的 dll
07/04 00:04, 31F

07/04 00:04, , 32F
然後,不用dll我就不能用plugin,不是不想用,是不能用
07/04 00:04, 32F
文章代碼(AID): #1AJWGrm7 (C_and_CPP)
文章代碼(AID): #1AJWGrm7 (C_and_CPP)