ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:85.49KB ,
资源ID:7774937      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7774937.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(在win10vs上编译运行bitcoinv01源码下.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

在win10vs上编译运行bitcoinv01源码下.docx

1、在win10vs上编译运行bitcoinv01源码下在 win10 vs 2015 上编译运行 bitcoin v0.1 源码 (下)一篇文章详细描述的如何让 bitcoin v1.0 源码通过编译,本篇将描述第一次运行过程中修改出现过的问题。数据库 dll 加载出错不清楚这个问题是不是个例, bitcoin 使 用的数据库 Berkeley DB v4.8 在 oracle 官网上下载安装后1. 使用 release 版本的 lib 和 dll 直接使用 release 版本的 dll在 debug 下运行 bitcoin 源码会第 184 行左右,在/ Clear andReadAtCur

2、sor 函数中的 free 处崩溃:free memorymemset(datKey.get_data(), 0, datKey.get_size();memset(datValue.get_data(), 0,datValue.get_size();free(datKey.get_data(); / 很可能在这个地方崩溃free(datValue.get_data();产生的原因是 :HEAPbitcoin-v0.1.exe: Invalid address specified to RtlValidateHeap( 01640000, 03177208 )呃其实我不知道产生的原因是什么,简

3、单的搜索可能的原 因是:在不同模块(工程)之间传递 C+ 类,而这两个模 块用了不同的运行时库( Runtime Library )设置。例如: EXE 模块调用 DLL 模块里传递 C+ 类的函数,但Debug 是 Multi-threaded Debug (/MTd) )方式编译,而EXE 模块使用动态链接( Release 是 Multi-threaded DLL (/MD)、Debug 是 Multi-threaded Debug DLL (/MDd) )方 式编译。HEAPxxx.exe:Invalid Address specified toRtlValidateHeap 错误的解

4、决方法总结 我也不清楚是不是这个原因啦,这个问题先搁置下- 使用2lebug版本的lib和 dll 直接使用安装包中自带的那个 libdb48d.lib 和libdb48d.dll 是在 vs2005 或者是 vs2008 平台下构建的。它 在构建这个 libdb48.dll 和 libdb48d.dll 的时候分别依赖了8.0.50727.762 版本的 libdb48.dll 和 libdb48d.dll 。这丫是个 历史遗留问题,参考: Side-by-side assembly 这 2 个 dll 只 会在安装 vs2005 和 vs2008 的时候存在, 以后都只会以兼容 库的形式存

5、在。但是关键是这个现在绑定版本,所以就造成 了 crash 。解决方法就是下面的第 3 点,重新编译。至于berkeley dbrelease 为什么会自动存在,那是因为我在安装 的时候安装包把安装的 路径 bin 填写到了 path 变量当中, 而在这个 bin 目录下已经提供了 8.0.50727.762 版本的libdb48.dll 。但是它丫却没有在 bindebug 目录下提供libdb48d.dll 。所以就造成了 release 能运行, 但是因为其他 原因崩溃,而 debug 是直接运行不起来的。3. 解决方法因为安装包中的 release 和 debug 都无法运行, 所以只

6、能自己编译出 Berkeley DB 的 lib 和 dll 假设现在的berkeley db 的根目录是 那么在db-4.8.30build_windows 目录下可以找到Berkeley_DB.sln 打开它向上兼容后,进行项目构建,然后 将一个 example 项目设为主项目进行运行。 如果能运行成功 就是构建成功并且能够正常运行。此时在db-4.8.30build_windowsWin32Debug 目录下可以发现libdb48d.lib 和 libdb48d.dll 这两个文件。而这两个文件就 是在自己平台上编译出来的动态链接库。 之后把 bitcoin 源码 的关于 Berkele

7、y DB 的依赖库修改为新的路径, 然后就可以 正常运行了。这里修改的路径就是$(BDBPath)db-4.8.30build_windowsWin32Debug ( 参照 上一篇 )然后把 libdb48d.dll 拷贝到 bitcoin 项目的 libs 目 录下。二、wxWidgets 高版本兼容问题ps:以下的崩溃很可 能是因为 wxWidgets 版本高的原因, 要是版本低于 3.0/ 或者2.8?(可能 )很可能就没这些问题 1. 运行崩溃崩溃的原因主 要是由于在 wxWidgets 3.0 还是 2.8 收紧了 Sizer 布局的Align 规则检查的严格性。当布局的 flag

8、出现:wxEXPAND|wxALIGN_CENTER_XXX/ 或者是/ 当 Sizer 设置成 Verical 而子元素在 Add 进入 Sizer的时候设置为wxALIGN_CENTER_VERICAL / horizontal 同理所以出现问题的地方为:文件 uibase.cpp/ 133L / bSizer3-Add(m_panel14, 1, wxEXPAND|wxALIGN_BOTTOM|wxALL, 5);/ 修改为bSizer3-Add(m_panel14, 1, wxEXPAND | wxALL, 5);/ 357L / bSizer57-Add(m_staticText32

9、, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);/ 修改为bSizer57-Add(m_staticText32, 0, wxALL, 5);/ 363L /bSizer56-Add(m_staticText31, 0, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM|wxLEFT, 5);/ 修改为bSizer56-Add(m_staticText31, 0, wxTOP | wxBOTTOM |wxLEFT, 5);/ 366L /bSizer56-Add(m_textCtrlTransactionFee, 0, wxALL|wx

10、ALIGN_CENTER_VERTICAL, 5);/ 修改为bSizer56-Add(m_textCtrlTransactionFee, 0, wxALL, 5);/461L /bSizer60-Add(bSizer61, 0, wxALIGN_RIGHT|wxEXPAND, 5);/修改为 bSizer60-Add(bSizer61, 0, wxEXPAND, 5);/ 1751L /bSizer81-Add(m_textCtrl1, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5);/ 修改为bSizer81-Add(m_textCtrl1,

11、 0, wxALL | wxEXPAND, 5);/bSizer81-Add(m_textCtrl2, 0, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL, 5);/ 修改为bSizer81-Add(m_textCtrl2, 0, wxALL | wxEXPAND, 5);同时,在该文件中有其他瑕疵点: / 463L /this-SetSizer(bSizer60);/ 修改为this-SetSizerAndFit(bSizer60);/ 604L / this-SetSizer(bSizer21);/ 修改为this-SetSizerAndFit(bSiz

12、er21);/ 1786L /this-SetSizer(bSizer79);/ 修改为this-SetSizerAndFit(bSizer79);/fgSizer1 = new wxFlexGridSizer(3, 2, 0, 0);/ 注:这里很/ 修改为fgSizer1 = new wxFlexGridSizer(4, 2, 0, 0);所以这里改成 4 行 2 列 在 uibase.h 中修改 / 715LCGetTextFromUserDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& titl

13、e = wxEmptyString, const wxPoint& pos wxDefaultPosition, const wxSize& size = wxSize(403,138), long style = wxDEFAULT_DIALOG_STYLE);/ 修改为CGetTextFromUserDialogBase(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos wxDefaultPosition, const wxSize& s

14、ize = wxSize(403, 138), long style = wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER);窗口的大小dialog 就需要使用 EndModal() 或者是 Destroy() 来关闭Close();/Destroy();/ 改为/Close();Destroy();/ 1123L / Close();/ 改为EndModal(true);/ 1228L / Close();/ 改为EndModal(false);/ 1254L / Close();/ 改为EndModal(true);/ 1466L / Close();/ 改

15、为EndModal(true);/ 1479L / Close();/ 改为EndModal(true);/ 1510L / Close();/ 改为EndModal(false);/ Close();/ 改为EndModal(true);三、运行前的小准备 (根据自己需要修改 )我们都知道, bitcoin 默认会去寻找 (windows)C:UsersAppDataRoaming 目录下,新建一个 bitcoin目录来存放 bitcoin 的各种东西如节点,日志,数据库文件 等等。为了不和现在电脑上正常运行的目录混淆,我们可以 修改一下代码, 让这个试验的 bitcoin 源码的存储指向其

16、他文 件夹。在 main.cpp/ 1353L /strDir = strprintf(%sBitcoin, getenv(APPDATA);/ 修改为strDir = strprintf(%sBitcoin-debug, getenv(APPDATA);/ 1364L /strDir = strprintf(%sBitcoin, strAppData.c_str();/ 修改为strDir = strprintf(%sBitcoin-debug, strAppData.c_str();这个样子, 此时运行这个 bitcoin 项目的代码的时候, 就会存 储在 C:UsersAppDataRoamingbitcoin-debug 而不是存 储在 C:UsersAppDataRoamingbitcoin 这个官方的目录了,之后研究和调试都很方便,防止数据弄混。四、运行此时终于可以开始编译运行了。如果没有任何问题,你将看 到: 这个界面。此时你就是已经成功编译并运行的 bitcoin v0.1源码了棒!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1