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