QxOrm編譯使用手記

2021-07-13 13:18:54 字數 1757 閱讀 5637

手上有兩個專案,都是用qt寫的,分別用了ms access和mysql資料庫,最近有乙個優化資料庫操作、提公升速度、未來可能遷移到oracle的需求,就想到引入orm把較小的ms access專案改了,如果效果好,再引入到mysql專案然後遷移到oracle,因此我一開始就抱著很明確的目標:支援qt或c++,支援oracle、mysql、odbc(ms access)。

筆記(一)]

在win7下的測試]

接著開始找qxorm。

嗯?官網上不去?網上不去?上不去?不去?去?

嘗試ping了一下qxorm.com,是乙個法國的ip。

用了一些不可描述的方法成功開啟google,位址列輸入www.qxorm.com,回車。

嗯?還是上不去?是上不去?上不去?不去?去?

失敗,因為編譯bool_array.cpp檔案生成bool_array.o物件時失敗。

好吧,我開啟bool_array.cpp檔案,發現其實整個檔案因為預定義判斷為false的關係,根本沒有實現**,臥槽這樣都會生成錯誤?在逗我嗎?

後來我發現的確會的,因為它包含了1個頭檔案。

我開始嘗試各種辦法:重新編譯qxorm,重新編譯boost庫,新增環境變數,修改工程檔案,修改部分**,都沒有任何作用,錯誤依然是編譯bool_array.cpp檔案生成bool_array.o物件時失敗。

後來我決定完全按照[qxorm筆記(一)]上寫的來,使用boost1.56和qxorm1.3.2,雖然找不到1.3.2,但是在csdn上找到了1.2.6,抱著勉強一試的態度(因為這時候從開始找orm已經過去4天了)編譯了下,依然是編譯bool_array.cpp檔案生成bool_array.o物件時失敗。

使用已經裝在電腦上的qxorm1.2.6,開始編譯qxorm,等了一會兒,雖然產生了3000+的warning,但是編譯通過!

懷著激動的心情建立[qxorm在win7下的測試]中的sample,將qxorm.dll複製到編譯目錄下,開始編譯,出現了不能識別xport-all-symbols的錯誤,這個錯誤雖然難找,但是終於在stackflow找到解答,只要自己開啟makefile.release檔案,在-export-all-symbols前加上-wl,成為-wl,-export-all-symbols就行,據說這是qt固有bug,會把-e認為是乙個引數,之後的xport-all-symbols因為e被擷取就認不出來了。

重新編譯後,編譯成功,但是程式一執行就崩潰。開啟偵錯程式,發現是在前期載入dll時崩潰的,有若干個錯誤**,都嘗試找過但是沒有任何有用資訊。

經過不斷嘗試,我想到乙個辦法,開始逐步注釋sample中的**,終於確定在引入qxorm標頭檔案後會讓程式崩潰,這說明我用的1.2.6有問題。

迅速換上1.4.1,在qx******crypt.cpp檔案加上標頭檔案:

#include

編譯一次通過,sample也終於執行成功!但是程式報告沒有sqlite驅動。

我的確沒裝sqlite,所以我修改了例子**,嘗試連線mysql:

qx::qxsqldatabase::getsingleton()->setdrivername("qmysql");

excese me?用其他資料庫還要再裝乙個外掛程式或者自己寫邏輯?幹嘛不同時把外掛程式給我裝好?

excese me?官網用不可描述的方法都不能訪問,讓我怎麼弄?

excese me?有5個例項就要收費?許可證還要300歐乙個?

果然知識就是金錢啊……

正在嘗試自己寫生成邏輯……

linux使用手記

本文會根據筆者實踐不斷更新 一.安裝星際譯王 stardict 星際譯王是用gtk2開發的跨平台的國際化的詞典軟體。它具有 萬用字元匹配 選中區取詞 模糊查詢 等強大功能。所以他不僅僅是漢英和英漢詞典 目前星際譯王的詞庫很多 但國人大多還是用英漢和漢英比較多 官方主站 http stardict.s...

virtualbox使用手記

系統 ubuntu 8.10 機器上的windows崩潰了,就裝了個virtualbox,虛擬安裝了個virtualbox 先是用的apt源上的virtualbox ose,後來發現這個版本沒辦法支援usb裝置 於是換成了官方提供的新版本 http www.virtualbox.org wiki l...

git使用手記

結合vscode使用git遠端傳專案 在vscode中 檢視 開啟命令面板,輸入git安裝 進入到專案資料夾,git clone http 要傳的位址 git config list git config e global git config user.name 括號裡面寫你的github名字 g...