移植執行檔時還需要哪些檔?

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

移植執行檔時還需要哪些檔?

Post by HeMason »

呼~好不容易用幾個sample程式兜出一點點的界面!
總算看到畫面了。但遇到一個問題:

在開發環境下可以執行的檔案,要拷貝到另一台電腦單獨執行,
需要把 wxWidgets 下的哪些檔案一起拷貝過去嗎?

還是製作執行檔時要注意什麼?(我是用VC9)

還請前輩們指導一下,感謝囉!
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
sishui
Earned some good credits
Earned some good credits
Posts: 121
Joined: Mon Mar 10, 2008 6:13 am
Location: 中國

Post by sishui »

如果你用的是wx動態庫
把你用到(參見wx help里的Libraries list看你用到了哪些庫)的wx庫(dll)copy到你的新機器上。當然你也可以偷懶,全copy過去。
work work!!!
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

Post by HeMason »

sishui wrote:如果你用的是wx動態庫
把你用到(參見wx help里的Libraries list看你用到了哪些庫)的wx庫(dll)copy到你的新機器上。當然你也可以偷懶,全copy過去。
小弟搜尋了wxWidgets下的所有目錄,沒有找到任何DLL?!
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
sishui
Earned some good credits
Earned some good credits
Posts: 121
Joined: Mon Mar 10, 2008 6:13 am
Location: 中國

Post by sishui »

HeMason wrote:
sishui wrote:如果你用的是wx動態庫
把你用到(參見wx help里的Libraries list看你用到了哪些庫)的wx庫(dll)copy到你的新機器上。當然你也可以偷懶,全copy過去。
小弟搜尋了wxWidgets下的所有目錄,沒有找到任何DLL?!
你的wxWidgets是你自己編譯的?還是下載的的編譯好的版本?如果是你編譯的是編譯的靜態庫還是動態庫
work work!!!
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

Post by HeMason »

sishui wrote: 你的wxWidgets是你自己編譯的?還是下載的的編譯好的版本?如果是你編譯的是編譯的靜態庫還是動態庫
是自己編譯的。
但是不知道當時是怎麼編譯的了。
兩種方式在移植時需要注意什麼不一樣的東西嗎?

感謝了!
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
sishui
Earned some good credits
Earned some good credits
Posts: 121
Joined: Mon Mar 10, 2008 6:13 am
Location: 中國

Post by sishui »

HeMason wrote:
sishui wrote: 你的wxWidgets是你自己編譯的?還是下載的的編譯好的版本?如果是你編譯的是編譯的靜態庫還是動態庫
是自己編譯的。
但是不知道當時是怎麼編譯的了。
兩種方式在移植時需要注意什麼不一樣的東西嗎?

感謝了!
如果你wx編譯的方式是dll debug/release,那麼就是動態庫(dll),在其他機器運行你exe文件,就要把相應dll copy過去
如果你wx編譯的方式是debug/release,那麼就靜態庫(lib),那麼在編譯EXE文件的時候,連接器已經將靜態庫連接到你的exe文件中,因此可以直接運行exe,當然也許你需要把VS2008運行庫(DLL)copy過去。
work work!!!
HeMason
Experienced Solver
Experienced Solver
Posts: 73
Joined: Tue Jun 30, 2009 10:07 am
Location: Taiwan
Contact:

Post by HeMason »

sishui wrote: 如果你wx編譯的方式是dll debug/release,那麼就是動態庫(dll),在其他機器運行你exe文件,就要把相應dll copy過去
如果你wx編譯的方式是debug/release,那麼就靜態庫(lib),那麼在編譯EXE文件的時候,連接器已經將靜態庫連接到你的exe文件中,因此可以直接運行exe,當然也許你需要把VS2008運行庫(DLL)copy過去。
感謝了!
小弟既然沒找到DLL檔,那包準是用靜態庫。
只是一時找不到要用拷貝哪些東西過去,我再試試。
「漢書文書處理系統」作者,在這向大家學習。
MyBlog 梅僧山房
chess360
Earned a small fee
Earned a small fee
Posts: 15
Joined: Thu Oct 02, 2008 12:07 pm

Post by chess360 »

假定使用Microsoft Visual C++ Express 2008。

如果编译wxWidgets的时候,参数设定

SHARED = 0 RUNTIME_LIBS = dynamic

则除了生成的exe文件,还要为客户机器安装 The Microsoft Visual C++ 2008 Redistributable Package (x86)http://www.microsoft.com/downloads/deta ... laylang=en。优点:Windows update会自动修正bugs。

如果编译wxWidgets的时候,参数设定

SHARED = 0 RUNTIME_LIBS = static

则把生成的exe文件抄到客户机器即可。优点:安装程序简易。

若用命令行编译,将上面RUNTIME_LIBS也加入即可,例如:
nmake -f makefile.vc UNICODE=0 SHARED=0 BUILD=release MONOLITHIC=0 RUNTIME_LIBS = static

若用图形界面编译,可以编译前修改 (wxWidgets安装路径)\wxWidgets-2.8.10\build\msw\config.vc 找到RUNTIME_LIBS那一行修改即可。

须注意若设 RUNTIME_LIBS = static,则 SHARED 须设定为 0。
Post Reply