visual studio 2017 和qt 编译 bitcon源代码
visual studio 2017?
qt 5.7.1(別人已經(jīng)編譯好的靜態(tài)庫(kù),為什么用別人編譯好的,自己編譯老是編譯錯(cuò)誤,?)
1. 安裝vcpkg。將應(yīng)用程序內(nèi)的lib編譯成功。設(shè)置編譯選項(xiàng)為MTD哦。
用vcpkg安裝這些:
libevent:x64-windows-static
openssl:x64-windows-static
zeromq:x64-windows-static
berkeleydb:x64-windows-static
secp256k1:x64-windows-static
leveldb:x64-windows-static
有個(gè)地方需要注意,在項(xiàng)目的vcproj文件中加入這個(gè)屬性:vs編譯的時(shí)候就會(huì)自動(dòng)尋找vcpkg安裝的目錄:
?<VcpkgTriplet Condition="'$(Platform)'=='Win32'">x86-windows-static</VcpkgTriplet>
? ? <VcpkgTriplet Condition="'$(Platform)'=='x64'">x64-windows-static</VcpkgTriplet>
?
再也不用自己手動(dòng)去指定include目錄,lib目錄,和輸入lib文件了。
2. 編譯bcd,bc-cli項(xiàng)目。
3.? 編譯帶qt界面的bitcoin-qt。
這里主要是安裝vs qt 插件和加入qt庫(kù)的鏈接。
a.?安裝vs qt 插件,記得一定要啟動(dòng)哦,別弄成禁用(在vs的擴(kuò)展更新里面安裝)
?
b. 下載別人已經(jīng)編譯好的qt庫(kù)
https://www.npcglib.org/~stathis/blog/precompiled-qt4-qt5/
選Qt5 v5.7.1 (MSVC2015)。
c. 下載完后選擇static靜態(tài)庫(kù)。我的是x64位的。然后為什么動(dòng)態(tài)庫(kù)不行呢,因?yàn)樵蹅兊捻?xiàng)目都是MTD的鏈接方式,而這里面static靜態(tài)庫(kù)是MTD編譯出來(lái)的。
d. 在vs里面指定靜態(tài)庫(kù)的路徑,庫(kù)的輸入里面默認(rèn)是這幾個(gè):
qtmain.lib Qt5Core.lib Qt5Gui.lib Qt5Widgets.lib
e. 發(fā)現(xiàn)有編譯錯(cuò)誤。將宏注釋掉即可:QT_INIT_METAOBJECT , QT_WARNING_PUSH ,QT_WARNING_DISABLE_DEPRECATED
f.?發(fā)現(xiàn)Qt5Core.lib鏈接錯(cuò)誤,因?yàn)檫€缺少別的qt庫(kù),不著急,再加上
Qt5PlatformSupportd.lib
qminimald.lib
qoffscreend.lib
qwindowsd.lib
qtfreetyped.lib
qtharfbuzzngd.lib
qtpcred.lib
OK。 bitcoin-qt終于出來(lái)了。
對(duì)了:有個(gè)鏈接問(wèn)題得說(shuō)明一下:
. int __cdecl qInitResources_bitcoin_locale(void)" (?qInitResources_bitcoin_locale@@YAHXZ),該符號(hào)在函數(shù) "int __cdecl GuiMain(?
. int __cdecl qInitResources_bitcoin(void)" (?qInitResources_bitcoin@@YAHXZ),該符號(hào)在函數(shù) "int __cdecl GuiMain(int,char * * const)
這是因?yàn)閎itcoin.cpp里面的兩行代碼:
? ? Q_INIT_RESOURCE(bitcoin);
? ? Q_INIT_RESOURCE(bitcoin_locale);
qt把資源文件寫(xiě)到代碼中,函數(shù)qInitResources_bitcoin和qInitResources_bitcoin_locale的實(shí)現(xiàn)就是根據(jù)bitcoin.qrc
和bitcoin_locale.qrc生成出來(lái)的,所以需要把這兩個(gè)文件加入到項(xiàng)目中。(這兩個(gè)文件是qt編輯的),而后vs會(huì)生成qrc_bitcoin.cpp和qrc_bitcoin_locale.cpp。這里面就有上面兩個(gè)函數(shù)的實(shí)現(xiàn)了。
?
對(duì)了,需要在項(xiàng)目中加入moc文件的路徑哦,不然vs找不到。
這個(gè)鏈接也可供參考:https://blog.csdn.net/qq_16149777/article/details/78744074
總結(jié):把靜態(tài)庫(kù)、動(dòng)態(tài)庫(kù)搞清楚哦,另外vs的設(shè)置,inlcude路徑、lib路徑這些搞清楚。
另外提個(gè)事“如何判斷.lib是靜態(tài)庫(kù)還是導(dǎo)入庫(kù)”?
答:VS 路徑C:\Program Files\Microsoft Visual Studio 10.0\VC\bin”?自帶的一個(gè)工具 -?lib.exe:?運(yùn)行 lib /list hello.lib
如果輸出: hello.obj,則是靜態(tài)庫(kù)
如果輸出: hello.dll,則是動(dòng)態(tài)庫(kù)的導(dǎo)入庫(kù)。
另外我要把MD,MTD搞清楚,別稀里糊涂的。
總結(jié)
以上是生活随笔為你收集整理的visual studio 2017 和qt 编译 bitcon源代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 编译Bitcoin BCH config
- 下一篇: git 再探