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搞清楚,别稀里糊涂的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

thefist11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值