2015年2月5日 星期四

動態呼叫編譯成執行檔時要注意的地方

        之前文章有講過如果程式當中有比較少使用到的功能,可以透過動態載入與動態呼叫的方式,來加速程式開啟的速度,還有減少程式使用記憶體的負擔。
另外,還有一篇文章提到編譯成執行檔後路徑呼叫的差異。所以這篇主要是要說明編譯成執行檔後的兩種動態呼叫VI檔的差異。

        第一種的動態呼叫VI,是把動態呼叫的VI一併編譯進單一執行檔內(附件ㄧ)。所以編譯成執行檔後,無法再修改被呼叫的VI。這種方法編譯成執行時,動態呼叫的VI路徑,不需要另外的設定,只要跟程式編輯時一樣的路徑就OK。主要在編譯的設定檔內部如下圖中所顯示的,要將動態呼叫的VI檔,放在Always Included裡面。



        另一種則是不把動態呼叫的VI包進執行檔內(附件二)。這樣後續如果要更新功能就不須重新編譯執行檔。如下面所示,subVI以VI的方式放置於subfolder資料夾內PS:呼叫VI的路徑要注意因為編譯成exe檔後會多一層,所以可以依照之前的文章來解決。



        最近剛好看到網路上有人在詢問是否可以不變更主程式,只更新是否可以不變更主程式,只更新UI介面的樣式。答案是可以的!測試過後發現可以把要動態呼叫的VI包進執行檔內,但UI介面的VI不包進執行檔內(附件三)。只要在編譯的設定檔內Always Included放置動態呼叫的VI,並且UI介面的VI呼叫的路徑正確就可以達成。如下圖所示,包成執行檔後,路徑要多一層執行檔名稱。


PS:如果不想給別人看到發佈出去的UI介面VI的程式碼!可以在 發布前將後面板的程式介面移除,只保留前面板,就不會有程式碼外流的疑慮,因為程式碼已經變成機器碼。

如果你不想要讓人知道你用哪種語言寫的,如下圖,可以將UI介面的VI用llb檔包起來後再改副檔名為dll,變成假的dll檔XD(附件四)。


反正總歸一句,呼叫的路徑設定OK就OK拉~