Qt在运行代码时,构建运行模式报错,将所有路径改成中文后,同样报错,求解答?

博客分类:
通过传统的form表单提交的方式上传文件:
&form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"&
&h1 &测试通过Rest接口上传文件 &/h1&
&p &指定文件名: &input type ="text" name="filename" /&&/p&
&p &上传文件: &input type ="file" name="file" /&&/p&
&p &关键字1: &input type ="text" name="keyword" /&&/p&
&p &关键字2: &input type ="text" name="keyword" /&&/p&
&p &关键字3: &input type ="text" name="keyword" /&&/p&
&input type ="submit" value="上传"/&
不过传统的form表单提交会导致页面刷新,但是在有些情况下,我们不希望页面被刷新,这种时候我们都是使用Ajax的方式进行请求的:
url : "http://localhost:8080/STS/rest/user",
type : "POST",
data : $( '#postForm').serialize(),
success : function(data) {
$( '#serverResponse').html(data);
error : function(data) {
$( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText);
如上,通过$('#postForm').serialize()可以对form表单进行序列化,从而将form表单中的所有参数传递到服务端。
但是上述方式,只能传递一般的参数,上传文件的文件流是无法被序列化并传递的。
不过如今主流浏览器都开始支持一个叫做FormData的对象,有了这个FormData,我们就可以轻松地使用Ajax方式进行文件上传了。
关于FormData及其用法
FormData是什么呢?我们来看看Mozilla上的介绍。
XMLHttpRequest Level 2添加了一个新的接口FormData.利用FormData对象,我们可以通过JavaScript用一些键值对来模拟一系列表单控件,我们还可以使用XMLHttpRequest的方法来异步的提交这个"表单".比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件.
所有主流浏览器的较新版本都已经支持这个对象了,比如Chrome 7+、Firefox 4+、IE 10+、Opera 12+、Safari 5+。
这里只展示一个通过from表单来初始化FormData的方式
&form enctype="multipart/form-data" method="post" name="fileinfo"&
var oData = new FormData(document.forms.namedItem("fileinfo" ));
oData.append( "CustomField", "This is some extra data" );
var oReq = new XMLHttpRequest();
oReq.open( "POST", "stash.php" , true );
oReq.onload = function(oEvent) {
if (oReq.status == 200) {
oOutput.innerHTML = "Uploaded!" ;
oOutput.innerHTML = "Error " + oReq.status + " occurred uploading your file.&br \/&";
oReq.send(oData);
使用FormData,进行Ajax请求并上传文件
这里使用JQuery,但是老版本的JQuery比如1.2是不支持的,最好使用2.0或更新版本:
&form id= "uploadForm"&
&p &指定文件名: &input type="text" name="filename" value= ""/&&/p &
&p &上传文件: &input type="file" name="file"/&&/ p&
&input type="button" value="上传" onclick="doUpload()" /&
function doUpload() {
var formData = new FormData($( "#uploadForm" )[0]);
url: 'http://localhost:8080/cfJAX_RS/rest/file/upload' ,
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (returndata) {
alert(returndata);
error: function (returndata) {
alert(returndata);
17 顶10 踩
浏览 374413
lhist 写道为什么我用这个在浏览器的控制台报错,错误信息如下:XMLHttpRequest cannot load http://localhost:1337/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.send @ jquery-2.2.1.js:9175jQuery.extend.ajax @ jquery-2.2.1.js:8656doUpload @ t1.html:26onchange @ t1.html:62还有一条警告:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.怎么办??jquery要加两个参数。 $.ajax({&&&&&&&&&&&&&&& type: "post",&&&&&&&&&&&&&&& url: "/Uploadhelp/Upimg",&&&&&&&&&&&&&&& data: formdata,&&&&&&&&&&&&&&& contentType: false,&&&&&&&&&&&&&&& processData: false,&&&&&&&&&&&&&&& success: function (data) { &&&&&&&&&&&&&&& }&&&&&&&&&&& });这两个false的参数一个不能少@qq& 人家说了老版本的jq不支持
能用zepto.js中的ajax吗??& 我用的是zepto中的ajax来上传图片,报Illegal invocation(非法调用)我用的jquery之前和你一样,加上这两个参数就好了 $.ajax({&&&&&&&&&&&&&&& type: "post",&&&&&&&&&&&&&&& url: "/Uploadhelp/Upimg",&&&&&&&&&&&&&&& data: formdata,&&&&&&&&&&&&&&& contentType: false,&&&&&&&&&&&&&&& processData: false,&&&&&&&&&&&&&&& success: function (data) { &&&&&&&&&&&&&&& }&&&&&&&&&&& });
为什么我用这个在浏览器的控制台报错,错误信息如下:XMLHttpRequest cannot load http://localhost:1337/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.send @ jquery-2.2.1.js:9175jQuery.extend.ajax @ jquery-2.2.1.js:8656doUpload @ t1.html:26onchange @ t1.html:62还有一条警告:Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.怎么办??jquery要加两个参数。 $.ajax({&&&&&&&&&&&&&&& type: "post",&&&&&&&&&&&&&&& url: "/Uploadhelp/Upimg",&&&&&&&&&&&&&&& data: formdata,&&&&&&&&&&&&&&& contentType: false,&&&&&&&&&&&&&&& processData: false,&&&&&&&&&&&&&&& success: function (data) { &&&&&&&&&&&&&&& }&&&&&&&&&&& });这两个false的参数一个不能少
日哦,服务端怎么解析的又不说。踩兄台,我这个讲的是怎么用Ajax方式上传文件。服务端怎么解析,那个要看服务端用的什么语言,还有用的什么框架,这之类的教程太多太多了。你是想让我讲哪种呢?如果我讲的是服务端用Spring怎么解析,而你用的是PHP,你会不会说“日哦,PHP服务端怎么解析的又不说。踩”
浏览: 967686 次
来自: 南京
浏览量:93899
浏览量:99049
浏览量:172337
手机用户 写道如果楼主没有测试通过就不要分 ...
zhrb 写道这个工具类是不是只支持excel2007的文件格 ...
大家这么多问题一问,估计楼主也懵逼了
怎么用jmx部署war到weblogic呢,有没有相关api
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'《Qt 学习之路 2》目录 | DevBean Tech World
&/&&/&《Qt 学习之路 2》目录
《Qt 学习之路 2》目录
《Qt 学习之路 2》目录phabrocator中文路径不能识别问题解决方案
phabrocator使用过程中发现了是哪个问题
1,修改内容有中文时会导致文档差异内容乱码。,代码路径中有中文时会提示提交失败。,大工程提交评审过程相当缓慢。
查看文档上关于中文字符和代码提交路径的相关介绍。文档介绍对于提交文件中包含中文的处理方法,需要在提交的时候加上—coding GBK,具体为提交时使用命令–encoding
GBK。而代码提交路径中有中文则没有相关介绍,应该是设计的时候就没有做相关处理。关于提交大工程太慢的问题则是只能在当前文件目录中有仓库配置文件的情况下才能提交,而我们使用的版本在之后只有在工程根目录下才有配置文件文件,所以导致使用的情况下只有在根目录才能提交评审,从而导致会扫描全部工程文件,致使文件量过多时过慢。
根据以上的分析,问题1已经通过官方文档解决,但是问题和问题属于设计缺陷,解决办法是修改源码。我们首先解决问题,通过的相关文档我们知道,属于结构,其主要的评审流程如下:
根据问题2的错误提示
提示内容表示svn的节点错误,找不到文件。可以合理猜测在生成文件差异的过程中将差异内容文本格式识别错误,之后在检查的过程中提示此错误。
有了以上的猜测,我们可以查看代码中的获取文件差异的代码部分,将文本格式转化为Phabricator能识别的格式即可。
分析Phabricator的调用方式:
继续分析generateChanges()方法,找到了一下语句
分析为对不同代码管理工具做了不同处理,如果是SVN工具下,则使用上述对于方法处理。针对本问题的路径问题,需要分析generateAffectedPaths()方法,然后发现调用了$paths
= $repository_api-&getSVNStatus($externals = true);方法来获取路径,具体的调用方式如下
剩下的处理就简单了,需要在获取xml格式文本后件将文本转化为格式,但是这样还不够,因为的服务器并不难识别格式,需要在发送数据前将数据从转化为,具体修改如下:
1, getSVNStatus ()方法修改
2,方法修改
新增了格式转换方法
作出以上修改后,果然路径中有中文也不会出现问题。
同理对于问题3,我们希望的情况是在非根目录下也能提交,同时只提交当前目录,有了上述铺垫,我们可以直接在工程非根目录下运行–xml status,发现也能输出对于当前目录的文件差异,以这一点为基础,只需要解除对下非根目录不能提交的限制即可。具体做法如下:
1,在ArcanistWorkingCopyIdentity.php的newFromPathWithConfig方法里修改判断当前目录,改为判断当前目录以及父目录
通用需要新增判断方法
有了以上修改后,就可以在非svn根目录也能提交,提高了评审速度。
没有更多推荐了,Java 与您, 立即下载
关于 Java (英语站点)vs2013编译bitcoin源码(bitcoin-0.9.4)
使用Mingw环境可以比较快的编译出bitcoin-cli,bitcoind,bitcoin-qt这三个执行文件,但是对于C++开发人员不方便学习代码,进行调试,所以本人网上找了一些资料实践了一把,记录如下:
环境:win7 64位系统,vs2013, bitcoin-0.9.4源码
第一节 依赖库
下载、编译比特币源码的依赖库。
比特币源码的依赖库包含OpenSSL、Berkeley DB、Boost、miniupnpc、QT等第三方依赖库
1、下载perl安装
(windows 环境VS编译需要)
默认:C:\Perl,运行“CMD”命令,使用cd命令指向perl安装目录的eg文件,执行“perl example.pl”若显示“Hello from ActivePerl!”,则说明Perl安装成功!
安装OpenSSL下载:
打开VS2013的命令行窗口,进入到openssl-1.0.1g目录下,依次输入以下命令进行编译:
perl Configure VC-WIN32
nmake -f ms\ntdll.mak
编译完成后,在各个工程中添加OpenSSL的目录,头文件路径是:C:\deps\openssl-1.0.1g\include\openssl(本机安装依赖库都在c:\deps下),lib路径是:C:\deps\openssl-1.0.1g\out32dll,lib库名称是:libeay32.lib、ssleay32.lib。
2、安装Boost,下载地址: 在VS2013的命令行窗口中编译boost_1_57_0,输入以下命令:
编译完成后,在各个工程中添加Boost的目录,头文件路径是:C:\deps\boost_1_57_0\stage\lib,lib路径是:C:\deps\boost_1_57_0\stage\lib。
3、库Berkeley
下载地址 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,lib库是libdb48d.lib,DLL库是libdb48d.dll,bitcoin的程序运行时需要libdb48d.dll,复制到bitcoin的程序相同目录中。
这是bitcoin-qt、bitcoin-qt-test 建立工程所需要的,不需要的可以跳过
下载地址:http://download.qt.io/archive/qt/5.3/5.3.2/
下载文件:
下载完成后安装即可。因为本人用的是vs2013 32位的编译器,所以要对应下载x86-msvc2013对应的版本,如果你的版本不同则要下载相应的Qt库,否则编译bitcon-qt工程时会报错。
5、QT的VC插件
这是bitcoin-qt、bitcoin-qt-test需要的,不在意的可以跳过。
下载地址:http://download.qt-project.org/official_releases/vsaddin/qt-vs-addin-1.2.3-opensource.exe。
下载后安装,在VS2013中菜单多了”Qt5“,在”Qt Options“中添加QT版本、路径(Qt库的安装路径)
6、库Protobuf这也是bitcoin-qt、bitcoin-qt-test需要的下载地址 :用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,lib库是libprotobuf.lib、libprotoc.lib。
第二节 创建VS工程
分析比特币的源码,总结成3个程序、2个测试程序,3个程序对应着BTC钱包中的3个程序。分别是:
bitcoin-clibitcoindbitcoin-qt,QT钱包。bitcoin-qt-test,QT钱包测试程序。test_bitcoin,bitcoin core单元测试程序。
在VC中的工程结构如图:
为保持BTC的文件目录结构,Bitcoin.sln、bitcoin-cli.vcxproj、bitcoind.vcxproj在src目录下,bitcoin-qt.vcxproj位于src\qt目录中,bitcoin-qt-test.vcxproj位于src\qt\test目录中,test_bitcoin.vcxproj位于src\test目录中。
bitcoin-cli、bitcoind、test_bitcoin是console类型。bitcoin-qt是QT的Application类型,依赖QT的QtCore、QtGui、QtNetwork、QtWidgets。bitcoin-qt-test是QT console application类型,依赖QT的QtCore、QtGui、QtNetwork、QtWidgets、QtTest。
第三节 添加代码文件
现在开始给各个工程添加相关的代码文件。
因为src目录下的文件在所有工程中都用到,所以先在bitcoin-cli工程新建文件夹(在资源管理器中新建筛选器),添加各个工程公用的文件夹(Common),再复制到其他工程中。目录结构如下:
注意几点:
头文件、源文件只包含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目录下的文件。工程结构如下:
在bitcoin-qt中添加src\qt中的目录、文件。不包含test目录下的文件。工程结构如下:
forms下包含src\qt\forms下的文件,locale下包含src\qt\locale下的文件,res中包含src\qt\res下的目录、文件,Resource Files中包含bitcoin.qrc。
proto下的.h、.cc文件是用工具Protobuf生成的,后面介绍。
在bitcoin-qt-test工程中添加src\qt\test目录下的文件。添加bitcoin-qt的代码文件。工程结构如下:
第四节 设置工程属性
设置工程属性,除了设置前面介绍的依赖库的相关路径、lib库外,还有些特殊设置,这里特别介绍。
1、bitcoin-cli、bitcoind、test_bitcoin工程的字符集从UNICODE改为多字符集。
2、所有工程设置leveldb相关的头文件路径,包含3个,分别是:
\leveldb\leveldb\include\leveldb\helpers\memenv
3、工程添加预处理器定义:
预处理定义分所有工程都需要定义、单个工程需要定义的,在下面会指明。
先说所有工程都需要知名的预处理器定义:
_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的错误。
4、所有工程添加链接lib库:Shlwapi.lib。
第五节 修改代码
编译、运行过程中发生错误,逐条修改,数量很多,但改动很小。
1、工程Bitcoin-cli、Bitcoind
(1)文件main.cpp编译release版时,报错”Bitcoin cannot be compiled without assertions.”。把这句代码注释掉,增加#include &assert.h&,把assert宏定义为空语句。
(2)在文件net.h中添加#define __func__ __FUNCTION__,__func__是GCC的,__FUNCTION__是VC的。
(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出现的地方。
因为变量nVersion在函数参数中有定义,且局部变量中也有定义,重复定义,注释掉局部变量中的nVersion。
(4)把文件core.h中类CTxOutCompressor的IMPLEMENT_SERIALIZE宏展开,用实际代码替换,不用IMPLEMENT_SERIALIZE宏,用宏的参数替换宏定义中的{statements}字段。同上
(5)把文件serialize.h中ReadCompactSize函数中的0xLLu改为(unsigned __int64)0×。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]“。VC不允许数组大小为0。
(7)文件script.h中的CScriptCompressor中的Serialize函数、Unserialize函数中的数组越界了,且需要处理大小为0的数组,共4处。在bitcoin-0.9.4中未发现,可能已修正
Serialize函数中:
if(compr.size() & 0)
s && CFlatData(&compr[0], &compr[compr.size()-1]);
if(script.size() & 0)
s && CFlatData(&script[0], &script[script.size()-1]);
Unserialize函数:
if(vch.size() & 0)
s && REF(CFlatData(&vch[0], &vch[vch.size()-1]));
if(script.size() & 0)
s && REF(CFlatData(&script[0], &script[script.size()-1]));
(8)文件script.h中类CScript中:
#ifndef _MSC_VER
CScript(const unsigned char* pbegin, const unsigned char* pend) : std::vector&unsigned char&(pbegin, pend) { }
注释掉_MSC_VER的宏定义。
因为文件\qt\walletmodel.cpp中的WalletModel::prepareTransaction函数中的代码:
const unsigned char* scriptStr = (const unsigned char*)out.script().data();
CScript scriptPubKey(scriptStr, scriptStr+out.script().size());
编译错误,scriptStr的类型转换失败。
(9)在文件key.cpp中,添加函数:
int CompareBigEndianEx(const unsigned char *c1, size_t c1len) {
while (c1len & 0) {
注释掉const unsigned char vchZero[0] = {};
函数CKey::Check、CKey::CheckSignatureElement中的CompareBigEndian(vch, len, vchZero, 0)改为CompareBigEndianEx(vch, 32)。
GCC允许数组大小为0,但VC不允许。
在bitcoin-0.9.4中未发现,可能已修正
(10)文件addrman.cpp中的CAddrMan::Select_函数中的代码:
double nCorTried = sqrt(nTried) * (100.0 - nUnkBias);
double nCorNew = sqrt(nNew) * nUnkB
double nCorTried = sqrt((double)nTried) * (100.0 - nUnkBias);
double nCorNew = sqrt((double)nNew) * nUnkB
在sqrt函数的参数加入(double)强制类型转换,VC支持3个sqrt函数,参数类型不同,这里增加强制类型转换。
(11)文件init.cpp中的AppInit2函数中的Setvbuf的最后一个参数0改为INT_MAX。
setvbuf(stdout, NULL, _IOLBF, INT_MAX /*0*/);
VC不允许最后一个参数为0。
(12)把文件db.h中类CDB的部分代码注释掉,分别是:
Read函数中的free(datValue.get_data());ReadAtCursor函数中的free(datKey.getdata());free(datValue.getdata());
Free地址时报错,我跟踪过,在数据库的pdb-&get函数中确实调用了malloc函数申请内存,按理说free此地址没问题,但报错,这个问题暂时解决不了,后续解决。我暂时没有进行此步操作,待观察
(13)文件db.cpp中,类CDBEnv的CloseDb函数,时报错,解决不了,暂时注释掉,可能会产生数据库操作错误。
同步区块半小时后不在同步,这个问题可以跟与数据库的这2个修改相关,尚未确定。我暂时没有进行此步操作,待观察
(14)BTC源码中有2个bloom文件,分别是bloom.cpp、\leveldb\util\bloom.cc,编译时生成的bloom.obj冲突,把其中1个文件改名即可,把bloom.cc改名为bloomdb.cc。
(15)BTC源码中有2个hash文件,分别是hash.cpp、\leveldb\util\hash.cc,编译时生成的hash.obj冲突,把其中1个文件改名即可,把hash.cc改名为hashdb.cc。
(16)把文件\leveldb\util\env_win.cc中的CreateDirInner函数中的GetFileAttributes改为GetFileAttributesA,CreateDirectory改为CreateDirectoryA,强制使用ASCI函数。
(17)注释掉\leveldb\db\dbbench.cc、\leveldb\db\leveldbmain.cc中的main函数,冲突了。
(18)在文件netbase.cpp、\leveldb\db\dbiter.cc中添加语句:”typedef signed int ssize_t;”,VC中没有定义ssize_t数据类型。
(19)注释掉文件\leveldb\db\c.cc中的#include &unistd.h&,这是linux的头文件。添加#pragma warning(disable:4996),解决编译时候报错4996错误。
(20)函数min()、max()在windef.h、stl中有不同的定义,需要把std::numericlimits::max()改为(std::numericlimits::max)(),否则编译时max()参数报错。
需要改的地方包括:
文件serialize.h中的GetSizeOfCompactSize函数script.h文件中的类CScriptNum中的减号重载、加等于、减等于、getint()函数,WriteCompactSize函数文件core.h中的类CTxIn的3个构造函数,、IsFinal()函数\Qt\Qt5.2.0\5.2.0\msvc2010\include\QtCore\qdatetime.h中的类QDate中的nullJd函数
文件wallet.h中类CWallet的LoadMinVersion函数中的参数std::max加上小括号。
文件net.h中的类CNode的AskFor函数中的std::max加上小括号。
2、工程bitcoin-qt、bitcoin-qt-test
(1)在CMD中,运行\protobuf-2.5.0\vsprojects\Release目录下的protoc.exe,生成paymentrequest.proto文件对应的头文件、源文件,命令格式为:
protoc --proto_path=e:/bitcoin/qt --cpp_out=e:/bitcoin/qt e:/bitcoin/qt/paymentrequest.proto
把生成的.h、.cc文件添加到bitcoin-qt、bitcoin-qt-test工程中。
(2)对\qt\locale下的所有文件执行lrelease操作,在资源管理器中,在locale下的文件上点击右键,执行lrelease操作,生成文字的多国语言版本。
(3)在文件\qt\winshutdownmonitor.h中语句“#include &windef.h& // for HWND”前面添加
WIN32_LEAN_AND_MEAN
#include &Windows.h&。因为编译时报错:1&c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winnt.h(6361): error C2146: syntax error : missing ‘;’ before identifier ‘ContextRecord’,多个错误。
(4)修改bitcoin-qt、bitcoin-qt-test工程中的某些cpp文件的编译方式,把Custom Build Tool改为C/C++ compiler。需要修改的文件为:rpcconsole.cpp、intro.cpp、overviewpage.cpp、bitcoin.cpp。vs2013操作:选中文件右键属性-&常规-&项管理-&c/c++编译器。
(5)注释掉文件\qt\test\test_main.cpp的第一行代码:#include “bitcoin-config.h”。我已经提交github修改此BUG,已通过,5月22日之后的代码没有这个问题,github上的修改BUG地址:https://github.com/bitcoin/bitcoin/pull/4212。有兴趣可以查看。
(6) 因为链接时报qInitResources_bitcoin无法识别的错误,所以屏蔽了bitcoin.cpp 中main函数下Q_INIT_RESOURCE(bitcoin);这句,错误原因还不清楚,后续再看
3、工程test_bitcoin
移除test_bitcoin工程中COMMON的源文件目录下的init.cpp,因为变量pwalletMain等重定义了,冲突。在文件\test\utiltests.cpp中添加代码:typedef signed int ssizet;在MAC系统下编译bitcoin,把\src\test\data目录下的所有h文件复制到相同目录中。(因为分析makefile,把json文件转换成h文件的方法是通过创建h文件,输出字符串,字符转换等完成的,需要新写程序来做,所以暂时使用MAC编译后的h文件。)
在src目录中的Makefile.include文件完成此操作,转换代码如下:
%.json.h: %.json
@$(MKDIR_P) $(@D)
@echo "namespace json_tests{" & $@
@echo "static unsigned const char $(*F)[] = {" && $@
@$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $& | $(SED) -e 's/0x
,//g' && $@
@echo "};};" && $@
@echo "Generated $@"
%.raw.h: %.raw
@$(MKDIR_P) $(@D)
@echo "namespace alert_tests{" & $@
@echo "static unsigned const char $(*F)[] = {" && $@
@$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $& | $(SED) -e 's/0x
,//g' && $@
@echo "};};" && $@
@echo "Generated $@"
使用vs2013编译相应的工程就可以得到对应的执行文件,然后就可以使用断点调试功能开始你的比特币代码学习之路了。
bitcoin源码编译vs2015
Ubuntu下从源码编译比特币qt客户端(Bitcoin-qt)教程
VS VC 编译调试比特币源码
VC编译调试比特币源码
原始版本的bitcoin源码
如何在windows平台下编译比特币bitcoin客户端
比特币源码的编译及环境搭建
比特币Bitcoin源代码安装编译
比特币源码linux下环境配置编译运行bitcoin
没有更多推荐了,

我要回帖

更多关于 黑马Qt 代码 的文章

 

随机推荐