基於OpenCasCade的程式發布問題

2021-09-08 06:14:50 字數 1115 閱讀 4254

基於opencascade二次開發了乙個程式,想採用簡單的copy的發布(部署)方式。

但在發布時遇到了很多問題。總結一下。

首先將所有所需的dll拷貝到了執行目錄下,然後將程式copy到一台未安裝opencascade的機器上執行出錯,資訊如下:

上網查了好久,所有的處理方法都不對路,極度鬱悶的思索中。首先報的不是dll未找到,說明不是dll未新增,那是什麼錯呢?抱著嘗試的態度,刪除了opencascade新增的所有環境變數,驚喜的發現,本機上執行也出現上述錯誤。

初步認為是呼叫了某個未知的dll,一條一條的新增環境變數,結果大出所料,當新增環境變數set casroot=e:\opencascade6.1.0\ros時,無錯誤發生。反覆測試後確定,就是這個環境變數在作祟。並且,此環境變數的值對我的程式並不重要,只要存在就可以正常執行。

基於這些,判斷肯定是opencascade的類庫中直接繫結了該環境變數,並在沒有發現該變數的時候莫名的丟擲了這樣乙個異常。

通過debug,將罪魁禍首定格在visualization這個工程。仔細查詢發現了如下**:

aspect_driver::aspect_driver () else

} else

tcollection_asciistring dir(csf_mdtvfontdirectory.value());

dirmftisdefined = (dir.length() > 0);

myusemft = standard_true;

mycolormapisdefined = standard_false;  

mywidthmapisdefined = standard_false;  

mytypemapisdefined  = standard_false;  

myfontmapisdefined  = standard_false;  

}

該**訪問了該環境變數,並且並沒做什麼實事,把casroot變數寫死,重新編譯通過。程式可以正常執行。

整個過程是個痛苦的經歷,提醒大家注意這個問題,類似的**不止出現在乙個工程中,對我而言修改此處就可以正常工作了(雖然這樣修改不是什麼好習慣)。如果下次大家碰到類似問題,可以參考一下。

OpenCasCade網格的顯示

首先看一張圖 上圖中間的網格區域,是occ提供的,可以給我們提供參考作用,那麼這個網格如何顯示出來,並設定屬性呢,其實在 v3d viewer這個類中有提供此類方法 下面兩種方法,實現了網格的顯示與隱藏,其他具體引數可以看occ 結構,有詳細介紹。activates the grid in all ...

基於python tkinter的點名小程式

讀取花名冊第一列資料進行隨機點名並生成點名記錄,並根據點名記錄確保點名的公平性,點名記錄每使用五天清理一次缺陷 1.依賴於花名冊,且花名冊第一列 忽略首行 必須有資料 2.依賴第三方庫openpyxl 3.檢視記錄 花名冊依賴第三方工具,如記事本 office def info t random.r...

OpenCASCADE安裝配置遇到的問題及解決方法

官方編譯原始碼安裝參考 關於第三方庫,linux頁面下面有基於debian的apt安裝,很方便 1.casroot環境變數未配置 export casroot usr local 當然,該命令是臨時的,可以測試看看,draw 1 是不是出來了,occt視窗也出來了 要想使其永久生效,sudo ged...