返回列表 回復 發帖

[分享]REALbasic 2008 R2 在 Windows 中編譯的程式無法執行?

REALbasic 官方秉持著每 3 個月發佈一個新的版本的原則,在 2008 年 5 月中發佈了 REALbasic 2008 R2 版。有興趣的人可以看一下它的 Realse Notes

REALbasic 2008 R2 中有個比較大的改變就是,現在編譯後除了產生單一的執行檔之外,還有可能會有其它的 DLL 檔。如果在您的程式中沒用到其它 plugins 的話,編譯後還是單一的執行檔;但如果有到的話,那編譯後除了執行檔之外,還有會有必要的 DLL 檔

假設您專案中 AppWindowAppName 值為 My Application.exe 的話,那輸出的結構將會變成
My Application
        My Application.exe
        My Application Libs
                Appearance Pak.dll(假設有用到)
                My Custom Plugin.dll(假設有用到)

其中存放 DLL 的資料夾名稱會是 WindowsAppName + " Libs"

讓我們來看產生後的實例:


暫時先撇開為什麼要分成這樣及這樣的好處跟壞處。先來看這樣的改變產生了什麼問題。

REALbasic 專案中 AppWindowsAppName 值就是編譯後的執行檔名稱。但在 REALbasic 2008 R2 中若是用ASCIIWindowsAppName 且有用到其它 plugins 時,那麼輸出時 Libs 資料夾中將不會有任何的 DLL 檔,而該執行檔本身也是有問題的。

來做個簡單的實驗:

先把 AppWindowsAppName 設為範例.exe


然後在 Window1 中放上一個 PushButtonEditField


然後把它編譯成執行檔,因為我們沒用到其它 plugins,所以就只會有單一的執行檔:範例.exe。接著我們執行看看


看來是很正常;接著我們在 PushButton1Action事件中加入程式


這邊我們用了 MD5 函式,雖然它是 REALbasic 中有提供的方法,不過也是透過外部的 DLL 來作用的,因此在編譯時會有一個 MD5.dll 的檔案。

接下來再編譯成執行檔,看一下輸出的結構


乍看之下好像是正常的,不過進到範例 Libs 資料夾中來看的話,就會發現裡面什麼檔案都沒有


硬是去執行範例.exe 時就會發生錯誤


就算我們再把 MD5.dll 放到範例 Libs 資料夾中也是一樣的問題。

目前的解決方法就是不要用ASCII來設定 AppWindowsAppName 值。

所以,我們把 AppWindowsAppName 改為 Sample.exe


然後再來編譯一次,此時的執行檔名就會變成 Sample.exe


其中的 Sample Libs 資料夾也有 MD5.dll 檔了


而程式也能正常的執行


如果在這邊把執行檔名Libs 資料夾名稱改為其它的話,一樣是會出現錯誤的喔!


除了這個問題之外,若 REALbasic 專案的儲存路徑ASCII時,也會有同樣的問題。暫時的解決方法就是把 REALbasic 專案的儲存路徑改成全為 ASCII 碼的囉。

REALbasic 官方已經知道這問題並修正了,但好像是要在 2008 R3 中才要發佈修正,現在各位就只能自己先避開這些問題囉!
以上內容於2008-05-15 15:55 發表在小弟的Blog http://blog.xuite.net/abgne/diary1/17158453
返回列表 回復 發帖