前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BTC-编译0.94版本

BTC-编译0.94版本

原创
作者头像
franket
发布2020-07-24 11:21:23
11.6K0
发布2020-07-24 11:21:23
举报
文章被收录于专栏:技术杂记技术杂记

参考:

http://blog.csdn.net/zhangbohh8662/article/details/71439765

0.94的代码位于

https://github.com/bitcoin/bitcoin/releases/tag/v0.9.4

bootstrap.cmd

引导区块链同步

通常,比特币客户端将通过与其他客户端同步来下载网络交易和网络信息,称为区块链。

随着[比特币区块链](https://blockchain.info/charts/blocks-size)增长到超过15千兆字节,并且每个月增长几乎一千兆字节,这可能需要多天。

幸运的是,有一个安全而快速的方法来加速这个过程。 我们将向您展示如何引导您的区块链,通过几个简单的步骤让您的客户端加快速度。

要求

全新安装的比特币客户端软件。

通过Bittorrent下载区块链

比特币核心开发者Jeff Garzik提供了一个[torrent文件](https://bitcointalk.org/index.php?topic=145386.0)用于引导目的,并且经常更新。

Bittorrent是一种通过使用网络中的其他客户端加速下载大文件的协议。

免费和安全的开源客户端的例子是[Deluge](http://deluge-torrent.org/)或[QBittorent](http://www.qbittorrent.org/)。

有关安装和配置Torrent客户端的指南可以在这里找到(http://dev.deluge-torrent.org/wiki/UserGuide)。 

有关Bittorent的更深入的教程可以在这里找到(http://www.howtogeek.com/howto/31846/bittorrent-for-beginners-how-get-started-downloading-torrents/)。

安装客户端后,我们将继续下载blockchain torrent文件。 使用以下磁铁链接:

代码语言:javascript
复制
magnet:?xt=urn:btih:2d4e6c1f96c5d5fb260dff92aea4e600227f1aea&dn=bootstrap.dat&tr=udp://tracker.openbittorrent.com:80&tr=udp://tracker.publicbt.com:80&tr=udp://tracker.ccc.de:80&tr=udp://tracker.istole.it:80

或者访问[Jeff Garzik的主题](https://bitcointalk.org/index.php?topic=145386.0)获取已签名的磁力链接。

bootstrap1.png
bootstrap1.png

或者,您可以使用Sourceforge上的[.torrent文件](http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bootstrap.dat.torrent/download)。

下载页面应该是这样的,下载倒计时。 如果不起作用,请点击直接下载链接。

安装的torrent客户端会识别下载的torrent文件。 将bootstrap.dat文件保存到您用于下载的文件夹中。 下图显示了QBittorent中的torrent下载,当前速度和ETA突出显示。

1526368768732912.png
1526368768732912.png

直接从官方存储库下载块链

BitTorent版本,如上所述,块链下载的刷新次数比可用的直接下载次数更多。 如果Bittorent在您的网络上被阻止,那么您可以使用直接下载方法。 确保只使用官方存储库作为下面显示的链接。 此下载只会将客户更新至2013年3月。

点击[这里](http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bitcoin_blockchain_170000.zip/download)下载或复制并粘贴下面的链接。

http://sourceforge.net/projects/bitcoin/files/Bitcoin/blockchain/bitcoin_blockchain_170000.zip/download

下载页面应该是这样的,下载倒计时。 如果不能直接点击下载。 将文件保存到您用于下载的文件夹。

bootstrap3.png
bootstrap3.png

导入区块链

如果您正在运行比特币客户端软件,请退出。 请务必不要使用积极使用的钱包。 

我们将把区块链的下载文件复制到比特币客户端数据目录中。 您应该至少运行一次客户端软件,以便它可以生成数据目录。 将下载的bootstrap.dat文件复制到Bitcoin数据文件夹中。

对于windows使用者:

打开资源管理器,然后在地址栏中输入:

代码语言:javascript
复制
%APPDATA%\Bitcoin

这将打开数据文件夹。 它应该看起来像下面的图片。 将bootstrap.dat从您的下载文件夹复制到此目录。

bootstrap4.png
bootstrap4.png

导入区块链

现在启动比特币客户端软件。 它应该显示“从磁盘导入块”,如下图所示。

bootstrap5.png
bootstrap5.png

等到导入完成。 客户将下载未被导入覆盖的最后日子。 恭喜你已成功导入区块链!

这安全吗?

是的,上述方法是安全的。 下载仅包含原始块链数据,客户端在导入时验证此数据。 不要从非官方来源下载区块链,特别是如果它们提供`* .rev`和`* .sst`文件。 这些文件未经过验证,可能包含恶意编辑。

MINGW编译

参看build.msw.md

http://blog.sina.com.cn/s/blog_5922b3960101s5j9.html

开发环境

1.安装mingw

http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download

我是直接安装在D盘了,因为C盘空间实在不够!

From MinGW installation manager->All packages->MSYS

选中以下安装包

代码语言:javascript
复制
msys-base-bin
msys-autoconf-bin
msys-automake-bin
msys-libtool-bin

点 apply changes开始安装,确保不要安装msys-gcc和msys-w32api

2.安装MinGW-builds

http://sourceforge.net/projects/mingw-w64/files/Toolchains targetting Win32/Personal Builds/mingw-builds/4.8.2/threads-posix/dwarf/i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z/download

下载并解压缩 i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z 到D盘根目录

设置PATH环境变量,将D:\mingw32\bin;添加到第一个,在命令行模式下输入 gcc -v 会得到以下内容:

代码语言:javascript
复制
Microsoft Windows [版本 10.0.16299.431]
(c) 2017 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=D:/mingw32/bin/../libexec/gcc/i686-w64-mingw32/4.8.2/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../../../src/gcc-4.8.2/configure --host=i686-w64-mingw32 --build=i686-w64-mingw32 --target=i686-w64-mingw32 --prefix=/mingw32 --with-sysroot=/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32 --with-gxx-include-dir=/mingw32/i686-w64-mingw32/include/c++ --enable-shared --enable-static --disable-multilib --enable-languages=ada,c,c++,fortran,objc,obj-c++,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-sjlj-exceptions --with-dwarf2 --disable-isl-version-check --disable-cloog-version-check --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=i686 --with-tune=generic --with-libiconv --with-system-zlib --with-gmp=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpfr=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-mpc=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-isl=/c/mingw482/prerequisites/i686-w64-mingw32-static --with-cloog=/c/mingw482/prerequisites/i686-w64-mingw32-static --enable-cloog-backend=isl --with-pkgversion='i686-posix-dwarf-rev3, Built by MinGW-W64 project' --with-bugurl=http://sourceforge.net/projects/mingw-w64 CFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -I/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/include -I/c/mingw482/prerequisites/i686-zlib-static/include -I/c/mingw482/prerequisites/i686-w64-mingw32-static/include' CPPFLAGS= LDFLAGS='-pipe -L/c/mingw482/i686-482-posix-dwarf-rt_v3-rev3/mingw32/opt/lib -L/c/mingw482/prerequisites/i686-zlib-static/lib -L/c/mingw482/prerequisites/i686-w64-mingw32-static/lib -Wl,--large-address-aware'
Thread model: posix
gcc version 4.8.2 (i686-posix-dwarf-rev3, Built by MinGW-W64 project)

到此,搭好开发环境

依赖库编译

运行D:\MinGW\msys\1.0\msys.bat,如果闪退,就重启一下电脑

我都放在D:\MinGW\deps下,为什么,因为空间不够了,又不想太多文件夹了

1.OpenSSL: http://www.openssl.org/source/openssl-1.0.1c.tar.gz

一条条运行以下命令:

代码语言:javascript
复制
cd /d/MinGW/deps/
tar xvfz openssl-1.0.1c.tar.gz
cd openssl-1.0.1c
./config
#Configure no-shared no-dso mingw
make

win10下编译报错

代码语言:javascript
复制
cryptlib.c:807:20: error: 'ERROR_INSUFFICIENT_BUFFER' undeclared (first use in this function)

这个定义在D:\MinGW\include\winerror.h中

打开D:\MinGW\deps\openssl-1.0.1c\crypto\cryptlib.c,在头增加一个#include <winerror.h>,继续make编译

代码语言:javascript
复制
bss_file.c:160:27: error: 'ERROR_NO_UNICODE_TRANSLATION' undeclared (first use in this function)

同样,打开D:\MinGW\deps\openssl-1.0.1c\crypto\bio\bss_file.c,在头增加一个#include <winerror.h>,继续make编译

最终生成D:\MinGW\deps\openssl-1.0.1c\libssl.a

2.Berkeley DB

http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz

一条条运行以下命令:

代码语言:javascript
复制
cd /d/MinGW/deps/
tar xvfz db-4.8.30.NC.tar.gz
cd db-4.8.30.NC/build_unix
sh ../dist/configure --enable-mingw --enable-cxx
make

最终生成D:\MinGW\deps\db-4.8.30.NC\build_unix\

3.Boost

https://sourceforge.net/projects/boost/files/boost/1.50.0/boost_1_50_0.tar.gz/download

https://sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip/download(jam 解压到boost_150_0文件夹下,编译boost使用)

一条条运行以下命令:

vs2013编译

1.ActivePerl

https://www.activestate.com/activeperl/downloads

安装完成后,运行cmd,跳向eg文件夹,如下说明perl安装成功:

代码语言:javascript
复制
C:\Users\Administrator>cd C:\Perl64\eg

C:\Perl64\eg>perl example.pl
Hello from ActivePerl!

2.Boost

https://sourceforge.net/projects/boost/files/boost/1.50.0/boost_1_50_0.tar.gz/download

打开VS2013,工具-->Visual Studio 命令提示(C)

运行以下命令:

代码语言:javascript
复制
bootstrap
.\b2

生成后如下:

代码语言:javascript
复制
The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    F:/OpenSource_Git/BTC/bitcoin094/boost_1_50_0

The following directory should be added to linker library paths:

    F:\OpenSource_Git\BTC\bitcoin094\boost_1_50_0\stage\lib

3.Berkeley DB

http://download.oracle.com/berkeley-db/db-4.8.30.NC.tar.gz

使用vs2013打开db-4.8.30.NC\buildwindows目录下的Berkeley DB.sln,生成解决方案

编译完成后,Berkeley DB头文件路径:\db-4.8.30.NC\build_windows,lib路径:\db-4.8.30.NC\build_windows\Win32\Debug(Release),lib库是libdb48d.lib

4.QT

这是bitcoin-qt、bitcoin-qt-test 建立工程所需要的,不需要的可以跳过

下载地址:http://download.qt.io/archive/qt/5.3/5.3.2/

下载文件:qt-opensource-windows-x86-msvc2013-5.3.2.exe

安装在D盘了

插件:

http://download.qt.io/official_releases/vsaddin/qt-vs-addin-1.2.3-opensource.exe

下载后安装,在VS2013中菜单多了”Qt5“,在”Qt Options“中添加QT版本、路径(Qt库的安装路径D:\Qt\Qt5.3.2\5.3\msvc2013)

5.OpenSSL

http://www.openssl.org/source/openssl-1.0.1c.tar.gz

打开VS2013的命令行窗口,进入到openssl-1.0.1c目录下,依次输入以下命令进行编译:

代码语言:javascript
复制
perl Configure VC-WIN32
ms\do_ms
nmake -f ms\ntdll.mak

编译完成后,在各个工程中添加OpenSSL的目录,头文件路径是:\openssl-1.0.1c\include\openssl,lib路径是:\openssl-1.0.1g\out32dll,lib库名称是:libeay32.lib、ssleay32.lib。

6.Protobuf

这也是bitcoin-qt、bitcoin-qt-test需要的

https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz

用vs2013打开 C:\deps\protobuf-2.6.1\vsprojects下的protobuf.sln,生成解决方案。

Protobuf库是用来把paymentrequest.proto文件生成对应的.h、.cc文件的。

编译完成后,在QT相关的bitcoin-qt、bitcoin-qt-test工程中添加Protobuf的相关目录,头文件路径是:\protobuf-2.6.1\src,lib路径是:\protobuf-2.6.1\vsprojects\Debug(Release),lib库是libprotobuf.lib、libprotoc.lib。

7.创建VS工程

分析比特币的源码,总结成3个程序、2个测试程序,3个程序对应着BTC钱包中的3个程序。分别是:

bitcoin-cli

Bitcoind

bitcoin-qt(Qt钱包)

bitcoin-qt-test(Qt钱包测试程序)

bitcoin-cli、bitcoind、test_bitcoin是console类型。

bitcoin-qt是QT的Application类型,依赖QT的QtCore、QtGui、QtNetwork、QtWidgets、QtOpenGL。

bitcoin-qt-test是QT console application类型,依赖QT的QtCore、QtGui、QtNetwork、QtWidgets、QtOpenGL、QtTest

在VC中的工程结构如图:

image.png
image.png

添加代码文件

先在bitcoin-cli工程新建文件夹(在资源管理器中新建筛选器),添加各个工程公用的文件夹(Common),再复制到其他工程中。工程结构如下:

1.png
1.png

注意几点:

头文件、源文件只包含src目录下的代码文件,不包含子目录下的代码文件,且不包含bitcoind.cpp、bitcoin-cli.cpp以及资源文件。

Common中包含src\json目录下的文件。

Common中包含src\leveldb下的目录、文件,不包含文件名为xxx_test格式的文件(否则编译代码时候会报错),不包含\leveldb\port\portposix.cc文件。

在bitcoin-cli工程中添加bitcoin-cli.cpp以及资源文件bitcoin-cli-res.rc

在bitcoind工程中添加bitcoind.cpp以及资源文件bitcoind-res.rc

在test_bitcoin工程中添加src\test目录下的代码文件,data中包含了src\test\data目录下的文件。工程结构如下:

2.png
2.png

在bitcoin-qt中添加src\qt中的目录、文件。不包含test目录下的文件。

使用工具protobuf生成proto下的.h.cc文件:

在CMD中,运行\protobuf-2.5.0\vsprojects\Release目录下的protoc.exe,生成paymentrequest.proto文件对应的头文件、源文件,命令格式:

代码语言:javascript
复制
F:\OpenSource_Git\BTC\bitcoin094\protobuf-2.6.1\vsprojects\Release>protoc --proto_path=F:\OpenSource_Git\BTC\bitcoin094\bitcoin-0.9.4\src\qt --cpp_out=F:\OpenSource_Git\BTC\bitcoin094\bitcoin-0.9.4\src\qt F:\OpenSource_Git\BTC\bitcoin094\bitcoin-0.9.4\src\qt\paymentrequest.proto

把生成的paymentrequest.pb.h、paymentrequest.cc文件添加到bitcoin-qt、bitcoin-qt-test工程的proto文件夹中

1.png
1.png

在bitcoin-qt-test工程中添加src\qt\test目录下的文件。添加bitcoin-qt的代码文件。工程结构如下:

1.png
1.png

设置工程属性

通用配置

1.使用多字节字符集

2.设置leveldb相关的头文件路径,包含3个,分别是:

代码语言:javascript
复制
    ..\..\..\src\leveldb
    ..\..\..\src\leveldb\include
    ..\..\..\src\leveldb\helpers\memenv

3.设置OpenSSL、Berkeley DB、Boost包含文件、库文件路径;

代码语言:javascript
复制
..\..\..\..\3rdParty\openssl-1.0.1c\include
..\..\..\..\3rdParty\boost_1_50_0\include
..\..\..\..\3rdParty\db-4.8.30.NC\include

4.设置附加库目录:

代码语言:javascript
复制
..\..\..\..\3rdParty\openssl-1.0.1c\lib
..\..\..\..\3rdParty\db-4.8.30.NC\lib
..\..\..\..\3rdParty\boost_1_50_0\lib

5.debug输入库文件:

代码语言:javascript
复制
libdb48d.lib shlwapi.lib libeay32.lib  ssleay32.lib

 release输入库文件:

代码语言:javascript
复制
libdb48.lib shlwapi.lib libeay32.lib ssleay32.lib

6.增加预处理器定义:

代码语言:javascript
复制
_WIN32_WINDOWS
HAVE_WORKING_BOOST_SLEEP
LEVELDB_PLATFORM_WINDOWS
OS_WIN
ENABLE_WALLET
_CRT_SECURE_NO_WARNINGS
_SCL_SECURE_NO_WARNINGS
_WINSOCK_DEPRECATED_NO_WARNINGS

_WIN32_WINDOWS:

        代码中需要定义_WIN32_WINNT或者_WIN32_WINDOWS,我定义了_WIN32_WINDOWS。

HAVE_WORKING_BOOST_SLEEP:

        在src目录下的util.h文件的MilliSleep函数中根据宏定义调用不同的BOOST的函数,我不知道该调用BOOST的哪个函数,就随意选择了HAVE_WORKING_BOOST_SLEEP,这个定义决定了调用boost::this_thread::sleep函数。

LEVELDB_PLATFORM_WINDOWS:

        leveldb编译支持windows平台。

OS_WIN:

        leveldb需要,包含windows相关的头文件。

ENABLE_WALLET:

        表示是否启用钱包,因为代码不完善,禁用钱包不要取消ENABLE_WALLET的定义,添加参数”-disablewallet”来完成。如果取消ENABLE_WALLET的定义,编译失败。

_CRT_SECURE_NO_WARNINGS:

        大家都懂了,去掉警告而已,可以不加的。

_SCL_SECURE_NO_WARNINGS:

        发现还要加上这个。

Bitcoin-qt、bitcoin-qt-test工程多加定义:WIN32_LEAN_AND_MEAN,不加时编译报很多winsock的错误。

所有工程添加链接lib库:Shlwapi.lib。

源码修改

工程bitcoin-cli、bitcoind

1.c.cc注释掉#include<unistd.h>

2.将__func__替换成__FUNCTION__

3.文件addrman.h中的类CAddrMan中的IMPLEMENT_SERIALIZE因为括号不对,编译报错,不用IMPLEMENT_SERIALIZE宏,把宏IMPLEMENT_SERIALIZE定义的3个函数函数GetSerializeSize、Serialize、Unserialize中的‘{statements} ’替换为IMPLEMENT_SERIALIZE中的参数。就是说把serialize.h中的IMPLEMENT_SERIALIZE对应的函数代码替换到addrman.h中CAddrMan的IMPLEMENT_SERIALIZE出现的地方。

4.core.h执行同样的替换

5.把文件serialize.h中ReadCompactSize函数中的0x100000000LLu改为(unsigned __int64)0×100000000。VC不支持LLu类型的数据

6.文件serialize.h中,类CDataStream的构造函数中: CDataStream(const std::vector& vchIn, int nTypeIn, int nVersionIn) : vch((char*)&vchIn.begin()[0], (char*)&vchIn.end()[0]),运行时报错,注释掉"[0]"。

7.文件script.h中类CScript中:

代码语言:javascript
复制
//#ifndef _MSC_VER
CScript(const unsigned char* pbegin, const unsigned char* pend) : std::vector<unsigned char>(pbegin, pend) { }
//#endif

注释掉_MSC_VER的宏定义

8.在文件netbase.cpp中添加语句:"typedef signed int ssize_t;"

9.将文件\leveldb\db\c.cc中的#include <unistd.h>替换为:

代码语言:javascript
复制
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif

10.把文件\leveldb\db\db_bench.cc和leveldb\db\leveldb_main.cc中的main函数注释掉

11.把文件leveldb\db\db_iter.cc增加typedef signed int ssize_t;

12.BTC源码中有2个bloom文件,分别是bloom.cpp、\leveldb\util\bloom.cc,编译时生成的bloom.obj冲突,把其中1个文件改名即可,把bloom.cc改名为bloomdb.cc

BTC源码中有2个hash文件,分别是hash.cpp、\leveldb\util\hash.cc,编译时生成的hash.obj冲突,把其中1个文件改名即可,把hash.cc改名为hashdb.cc

13.文件main.cpp编译release版时,报错”Bitcoin cannot be compiled without assertions.”。把这句代码注释掉,增加#include <assert.h>,把assert宏定义为空语句

bitcoin-qt

14.额外增加预处理器定义:WIN32_LEAN_AND_MEAN

15.额外增加附加库目录:

代码语言:javascript
复制
..\..\..\..\3rdParty\protobuf-2.6.1\lib
$(QTDIR)\lib
$(QTDIR)\plugins\platforms

16.额外增加附加库:

debug:

代码语言:javascript
复制
libprotobufd.lib
libprotocd.lib
qtmaind.lib
Qt5Cored.lib
Qt5Guid.lib
Qt5Networkd.lib
Qt5Widgetsd.lib
Qt5OpenGLd.lib
Qt5PlatformSupportd.lib

Release:

代码语言:javascript
复制
libprotobuf.lib
libprotoc.lib
qtmain.lib
Qt5Core.lib
Qt5Gui.lib
Qt5Network.lib
Qt5Widgets.lib
Qt5OpenGL.lib
Qt5PlatformSupport.lib

17.额外增加头文件目录:

代码语言:javascript
复制
.\GeneratedFiles
.\GeneratedFiles\$(ConfigurationName)
..\..\..\..\3rdParty\protobuf-2.6.1\include
$(QTDIR)\include
$(QTDIR)\include\QtCore
$(QTDIR)\include\QtGui
$(QTDIR)\include\QtNetwork
$(QTDIR)\include\QtWidgets
$(QTDIR)\include\QtOpenGL

18.额外增加宏定义:

代码语言:javascript
复制
_X86_

19.增加一个.user文件,用来增加QTDir定义:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b"$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
    <QTDIR>D:\Qt\Qt5.3.2\5.3\msvc2013</QTDIR>
    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b"$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
    <QTDIR>D:\Qt\Qt5.3.2\5.3\msvc2013</QTDIR>
  </PropertyGroup>
</Project>

20.运行时报错:This application failed to start because it could not find or load the QT plugin "window"

解决方式:把plugins下的platforms文件夹整个拷过来,同时把libEGL.dll和libGLESv2.dll也拷过来,即可运行了

21.文件init.cpp中的AppInit2函数中的Setvbuf的最后一个参数0改为INT_MAX,VC不允许最后一个参数为0

22.修改QT中的代码qdatetime.h 122行为:

代码语言:javascript
复制
static inline qint64 nullJd() { return (std::numeric_limits<qint64>::min)(); }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • bootstrap.cmd
    • 引导区块链同步
      • 要求
        • 通过Bittorrent下载区块链
          • 直接从官方存储库下载块链
            • 导入区块链
              • 对于windows使用者:
              • 导入区块链
            • 这安全吗?
            • MINGW编译
              • 开发环境
                • 依赖库编译
                • vs2013编译
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档