??xml version="1.0" encoding="utf-8" standalone="yes"?>
用XCODE来编译COCOS2D-X的项目,发现~译的时候出先问题提CCLANG:error :linker command failed with exit code 1 (use -v to see invocation),上个版本~译成功Q所以针对这个问题就很容易排除了Q查看更C什么,q行分析。发现就是添加了几个文gQ没有什么大的问题,开始网上找怎么use -v to see, 发现没有相关的, 看到|上也有几个人提个问题,但是都是Ҏ面面的,不是我这cd的?br />1. 有h解决的是Q在工作左边D栏Target-->Build Phases-->compile Sources中,W三库库的所?m文g都添加到里面Q然后编译通过了。也是文件的情况?br />2. 有h解决的是Q说明有无法准确扑ֈ的函敎ͼ函数有重复现象。造成q个错误的原因是我直接在 .h头文件中实现了几个函敎ͼ然后q个头文件又被别?c文g所引用Q有实现的。所以解军_法是把实现的几个函数单出一?c文g里去。这样就ok了?br />3. 有h解决的是Q在main函数的头Q既import?h文g又import?m文gQ?包含?m文g的情?
4. q有人遇C用的库版Q不支持当前的ios6,iphon5版本的问题?br />
基本上都不是我的问题Q有3的思\Q我x不是我重复加了某个文Ӟ因ؓ更新的时候发现自己添加了几个新文Ӟq有个几个老文件也d了进了xcode目Q当时就怀疑怎么老文件不在呢。。。删除,问题解决。。。也是包含?个同L文gQ或者叫工程中再同一namespace下有相同cR函数?br />5. 我遇到的问题解决?重复d了某?h,.cpp文g?/div>
]]>
_DEBUG ; NDEBUG
]]>
]]>
C:\boost_1_46_0
).bootstrap.bat
to build bjam.bjam --toolset=msvc-9.0 --build-type=complete stage
Library Directories
section to include the path to your boost libraries output. (The default for the example and instructions above would be C:\boost_1_46_0\stage\lib
. Rename and move the directory first if you want to have x86 & x64 side by side (such as to <BOOST_PATH>\lib\x86
& <BOOST_PATH>\lib\x64
).
]]>
五一期间看了一文章,Memory Barriers: a Hardware View for Software HackersQ对于Memory Barriers得到了更加深入的理解?/p>
Cache本n的更新是遵守MESIQModifiedQExclusiveQSharedQInvalidQ协议的。CPU之间的Cache信息更新通过消息传递来完成?/p>
但是现在CPU的设计中Q在Cache之外加入了Store Buffer和Invalidate Queue。Store Buffer的加入,使得CPUҎ内存单元的更C能马上反映到Cache中;Invalidate Queue的存在,使得其他CPU对Cache的invalidate操作不能马上反映到Cache中。Store Buffer和Invalidate Queue提高了性能Q但是也导致了Cache的不一致?/p>
因此需要引入Memory Barriers。Store Buffer和Invalidate Queue应该分别对应使用wmb和rmb。当然直接用通用mb也是可以的?/p>
Roughly speaking, a “rmb” marks only the invalidate queue and a “wmb” marks only the store buffer, while a “mb” does both.
一般来_Memory Barriers应该配对使用Q比如说一方用了rmb另外一方对应用wmb。在Linux内核中,q存在着Data
Dependence Memory
BarrierQ这是一个较qrmb。具体见Linux内核代码的Documentation/memory-barriers.txt?/p>
最q一个项目的客户端要ҎFlexQ用Socket与C++通讯旉C安全沙箱问题Q这是我的解x法;
1):{略文g与主套接字在同一端口Q只需调用 Socket.connect() ?XMLSocket.connect() ҎQ?/p>
2):{略文g与主套接字在不同端口Q需使用Ҏ?#8220;xmlsocket”语法调用 Security.loadPolicyFile() ҎQ如下所C:
Security.loadPolicyFile("xmlsocket://server.com:2525");
先调?Security.loadPolicyFile() ҎQ然后再调用 Socket.connect() ?XMLSocket.connect() Ҏ?/p>
试代码Q用同一端口
view plaincopy to clipboardprint?
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
short port=1800;//端口?nbsp;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化套接字
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//创徏套接?nbsp;
SOCKET sockConn;//用来和客L通信的套接字
SOCKADDR_IN addrSrv;//用来和客L通信的套接字地址
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(port);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//l定端口
listen(sockSrv,5);//侦听
printf("Server %d is listening......\n",port);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char buf[4096];//接收的数?nbsp;
char rbuf[100]=
"<cross-domain-policy> "
"<allow-access-from domain=\"*\" to-ports=\"*\"/>"
"</cross-domain-policy> ";//套接字策略文?nbsp;
while(1)
{
//接受q接
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
printf("Accept connection from %s\n",inet_ntoa(addrClient.sin_addr));
recv:
//接收数据
int bytes;
if((bytes=recv(sockConn,buf,sizeof(buf),0))==SOCKET_ERROR)
{
printf("接收数据p|!\n");
exit(-1);
}
buf[bytes]='\0';
printf("Message from %s: %s\n",inet_ntoa(addrClient.sin_addr),buf);
if (0 == strcmp(buf,"<policy-file-request/>"))
{
//发送数?nbsp;
if(send(sockConn,rbuf,strlen(rbuf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s\n",inet_ntoa(addrClient.sin_addr),rbuf);
}
else
{
//Echo
if(send(sockConn,buf,strlen(buf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s\n",inet_ntoa(addrClient.sin_addr),buf);
goto recv;
}
//清理套接字占用的资源
closesocket(sockConn);
}
}
#include <winsock2.h>
#include <windows.h>
#include <iostream>
using namespace std;
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
short port=1800;//端口?br>
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化套接字
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//创徏套接?br>SOCKET sockConn;//用来和客L通信的套接字
SOCKADDR_IN addrSrv;//用来和客L通信的套接字地址
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(port);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//l定端口
listen(sockSrv,5);//侦听
printf("Server %d is listening......\n",port);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char buf[4096];//接收的数?br>char rbuf[100]=
"<cross-domain-policy> "
"<allow-access-from domain=\"*\" to-ports=\"*\"/>"
"</cross-domain-policy> ";//套接字策略文?br>
while(1)
{
//接受q接
sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
printf("Accept connection from %s\n",inet_ntoa(addrClient.sin_addr));
recv:
//接收数据
int bytes;
if((bytes=recv(sockConn,buf,sizeof(buf),0))==SOCKET_ERROR)
{
printf("接收数据p|!\n");
exit(-1);
}
buf[bytes]='\0';
printf("Message from %s: %s\n",inet_ntoa(addrClient.sin_addr),buf);
if (0 == strcmp(buf,"<policy-file-request/>"))
{
//发送数?br> if(send(sockConn,rbuf,strlen(rbuf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s\n",inet_ntoa(addrClient.sin_addr),rbuf);
}
else
{
//Echo
if(send(sockConn,buf,strlen(buf)+1,0)==SOCKET_ERROR)
{
printf("发送数据失败!");
exit(-1);
}
printf("Message to %s: %s\n",inet_ntoa(addrClient.sin_addr),buf);
goto recv;
}
//清理套接字占用的资源
closesocket(sockConn);
}
}
无论是哪U情况,服务器均必须{待客户端的W一ơ传输之后再军_是发送策略文件还是徏立主q接。当 Flash Player h{略文gӞ它始l会在徏立连接后传输以下字符Ԍ
<policy-file-request/>
服务器收到此字符串后Q即会传输该{略文g。程序对于策略文件请求和主连接ƈ不会使用同一q接Q因此应在传输策略文件后关闭q接。如果不关闭q接QFlash Player 关闭策略文件连接,之后重新q接以徏立主q接?/p>
附网l资料:
1,首先目标服务器?43端口是否提供安全{略
2,如果1没有到{略Q则actionscript是否使用了Security.loadPolicyFile(xmlsocket://) 手段提供安全{略Q如果还没检到Q则使用W?步检?br>3,目标服务器目标端口是否提供安全{略
本文来自CSDN博客Q{载请标明出处Q?a >http://blog.csdn.net/xuxiangwin/archive/2009/07/07/4324218.aspx
一. 安装准备:
1. 准备安装文g:
(1):Qt 4.4.3 OpenSource for Windows
下蝲地址: ftp://ftp.trolltech.no/qt/source/qt-win-opensource-src-4.4.3.zip
(2)Qt Visual Studio Integration v1.2.2 for.VS.2003.2005 英文?/span>
下蝲地址:http://www.fixdown.com/china/Programming/2525.htm
(3)Visual Assist (代码提示功能,选装)
2. 已安装VS2005,安装其中C++卛_.
3. 下载的Qt 4.4.3文g解压. 如解压至目录D:\QT\4.4.3
4. 讄环境变量
叛_我的电脑->属?>高->环境变量;
在系l变量中新徏QTDIR变量,变量值D:\QT\4.4.3
新徏QMAKESPEC变量,变量值win32-msvc2005
在PATH变量中填?D:\QT\4.4.3\bin;
PS:
==============================
value platform
win32-msvc VC6
win32-msvc2003 VS2003
win32-msvc2005 VS2005
win32-msvc2008 VS2008
==============================
x准备工作l束.
? ~译QT
1. 配置
在命令行提示W下q入QTDIR目录,如cd D:\QT\4.4.3
在命令行中输入configure -no-dsp -vcproj
(具体参数讄可输入configure /?查看)
configure 大约需几分钟时?
2. ~译
configure完成?会有提示.此时只需输入nmakeq行~译.~译所花时间较?两三个小?视机器性能而定).
? 安装Qt Visual Studio Integration v1.2.2
直接安装卛_,用户名Q?注册码可取下列g一:
FG6ALD-Y2PYGSX-F4M-LQAHD59-JZ6QKN-FJ7PXV-049B
FGEZDGX-AZPBJ8X-F4M-K44SA7M-UEG7TH-UYAML8M-05D7
FGPDXA9-MXKFJYM-F4M-BHEDKZX-8XCETXX-92WFVWX-A05E
FGWNPUX-Y6X26L9-F4M-GLZMY99-97RXPJX-BP256DX-737C
? 配置VS2005
"工具"->"选项"->"QT"->"Builds"dversion name: 4.4.3 PATH: D:\QT\4.4.3
若安装了Visual Assist,则需选择"VAssistX" -> "Visual Assist X Options ..." -> "Projects", ?Platform"里面?Win32"改ؓ"Custom",
?Stable include files"中添加D:\Qt\4.3.3\include目录下的子文件夹.
D:\QT\4.4.3\bin目录下的DLL文g拷到C:\windows目录?注意,重装QT时记得删除或替换.否则可能会出现找不到链接入口的错?)
x安装l束.
? 试
VS2005?"文g"->"新徏"->"目",选择"Qt Projects"->"Qt Application".输入名称.定,FINISH,OK
双击解决Ҏ?hello.ui",卛_弹出H体~辑?在窗体上加入一个WIDGET,如BUTTON.
~译q行卛_.
~
2.3 现在可以开始编译了。注意要选择“Unicode Debug”?#8220;'Unicode Release”方式
3 下蝲CELayoutEditor。我是用SVN接的Q地址?https://crayzedsgui.svn.sourceforge.net/svnroot/crayzedsgui/CELayoutEditor/trunk
3.1 解压后打开工程Q将Include和Lib路径Ҏ自己的,其他的不用改
3.2 建立环境变量Q我的电脑\属性\高\环境变量Q然后在上面的用户变量区新徏一个,变量名是CE_LAYOUT_EDITOR Q变量值是CELayoutEditor的解压目录。注意这步不能省
3.3 l于可以开始编译了。。?img height=20 alt="" src="http://www.cnitblog.com/Emoticons/QQ/11.gif" width=20 border=0>
4
4.1 ~译会出C个错误,暂时我还没找到解x法,仅仅是给错误的地Ҏ释掉了。。。然后就~译成功?br> 4.2 拷一些东西过?/p>
4.3 SILLY.dll和SILLY_d.dll在依赖文件夹?br>
OK。。。到q里完了,虽然q个工具的bug很多Q不q不怕,~译它就是ؓ了要攚w它Q呵c希望此文对你有所帮助
#include <time.h>
#include <stdio.h>
int main( void )
{
time_t t = time( 0 );
char tmp[64];
strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年W?j?%z",
localtime(&t) );
puts( tmp );
return 0;
}
//Ҏ?优点Q能_到毫UQ缺点:使用了windows API
#include <windows.h>
#include <stdio.h>
int main( void )
{
SYSTEMTIME sys;
GetLocalTime( &sys );
printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n"
,sys.wYear,sys.wMonth,sys.wDay
,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds
,sys.wDayOfWeek);
return 0;
}
//Ҏ?优点Q利用系l函?br>#include<stdlib.h>
#include<iostream>
using namespace std;
void main(){
system("time");
}
可以改变电脑的时间设?
Ҏ4Q?br>#include<iostream>
#include<ctime>
using namespace std;
int main(){
time_t now_time;
now_time = time(NULL);
cout<<now_time;
return 0;
}
当前时间折ؓUQ再通过相应的时间换即可?br>
Ҏ5
//////////////////////////////////////////////////////////////////////////////////////////////
void main() {
LARGE_INTEGER lv;
// 获取每秒多少CPU Performance Tick
QueryPerformanceFrequency( &lv );
// 转换为每个Tick多少U?br> double secondsPerTick = 1.0 / lv.QuadPart;
for ( size_t i = 0; i < 100; ++i ) {
// 获取CPUq行到现在的Tick?br> QueryPerformanceCounter( &lv );
// 计算CPUq行到现在的旉
// 比GetTickCount和timeGetTime更加_
double timeElapsedTotal = secondsPerTick * lv.QuadPart;
cout.precision( 6 );
cout << fixed << showpoint << timeElapsedTotal << endl;
//printf( "%lf \n", timeElapsedTotal ) ;
}
}