我正在研究需要解壓縮.zip
文件的程序。在嘗試了幾種不同的方法來完成這項工作之後,唯一能找到滿足我所有需求的方法是7z.exe
。由於我可以將可執行文件的位置硬編碼到代碼中,因此它可以很好地工作。但是,如果其他人試圖使用它,該部分將不起作用。有什麼方法可以讓他們訪問嗎?謝謝!如何增加7z.exe的可移植性
0
A
回答
1
我建議你使用壓縮庫(看看libarchive:http://www.libarchive.org)。如果你無法做到這一點,你應該將7z.exe及其依賴關係發佈到你的應用程序中,並將它們放在與你的主要可執行文件相關的固定位置。 然後你得到使用GetModuleFileName
,帶你的主要可執行文件的絕對路徑,並使用PathCchCombine
相對路徑結合:
char filename[MAX_PATH];
GetModuleFileName(NULL,filename,(sizeof(filename))/(sizeof char));
PathCchRemoveFileSpec(filename,(sizeof(filename))/(sizeof char));
PathCchCombine(filename,(sizeof(filename))/(sizeof char),filename,"./7zip/7zip.exe");
//the absolute path of 7z.exe is now in filename
文檔爲GetModuleFileName
:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms683197(v=vs.85).aspx
PathCchRemoveFileSpec
:
http://msdn.microsoft.com/en-us/library/hh707092(v=vs.85).aspx
和PathCchCombine
:
http://msdn.microsoft.com/en-us/library/hh707085(v=vs.85).aspx
+0
我沒有想到壓縮庫,謝謝! – thnkwthprtls
相關問題
- 1. 如何添加標題增加可移植性? (SYS/time.h中)
- 2. GLOB_BRACE可移植性?
- 3. EJB可移植性
- 4. fwrite可移植性
- 5. MinGW可移植性
- 6. Linq可移植性
- 7. 雲可移植性
- 8. JavaScriptCore可移植性
- 9. OpenCV可移植性
- 10. dlfunc的可移植性?
- 11. nextElementSibling/nextSibling的可移植性
- 12. Gtk/python和可移植性
- 13. SQLite庫 - Python可移植性
- 14. __try和__exception可移植性
- 15. Python可移植性問題
- 16. std :: errc ABI可移植性
- 17. 共享庫可移植性
- 18. C - Glib GINT_TO_POINTER可移植性
- 19. FreeTTS可移植性問題
- 20. 如何可移植是C++?
- 21. Windows Azure - 可移植性和遷移?
- 22. 可移植性如何將可執行文件鏈接到可加載模塊?
- 23. C中的open(... O_DIRECT)的可移植性?
- 24. 可移植性依賴scrrun.dll可用嗎?
- 25. C中的可移植性問題
- 26. Apache,PHP和MySQL的可移植性?
- 27. 在Windows上的Linux pthread可移植性
- 28. Solr索引的可移植性
- 29. Clojure文件系統的可移植性
- 30. pthread和socket.h的可移植性
你可以使用lib7zip,我猜。 –
7zip是開源的 - 隨時使用它: http://sourceforge.net/projects/sevenzip/ – Stefan