Error

C++博客 首页 新随笔 联系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

2017年10月8日 #

可能出现的编译提示:std::bind  expects 6 arguments - 7 provided
 
VC++上默认的bind和tuple最多只能有5个参数,高于5个就会出现编译bug,,,今天有遇到这个问题了,记录下。想来惭愧,第一次遇到还是多年以前,这次处理有找了一天多。。。

VC下这个宏是用来控制参数最大个个数的,看2012的宏定义,最多能支持9个,但是placeholder能到20个。。。
-D_VARIADIC_MAX=9   或者 #define _VARIADIC_MAX 9
posted @ 2017-10-08 22:35 Enic 阅读(451) | 评论 (0)编辑 收藏

2017年7月12日 #

定时器使用:(cocos貌似没有提供详细参数文档,参数数量不一样的时候每个参数表达的含义不一样,使用如果问题,请自行读代码,否则真不知道每个参数的含义是什么)
------------------------------------------------------------------------------
1.注册定时器
//C++: js_CCScheduler_schedule
cc.director._scheduler.schedule(this, this.onTimerTest.bind(this), 1, cc.REPEAT_FOREVER, 0, false, "keyCountDownTime");
2.定时器回调原型
onTimerTest : function (interval) {
3.取消定时器
cc.director._scheduler.unschedule("keyCountDownTime", this);
------------------------------------------------------------------------------
cc.director._scheduler.schedule(this, this.onTimerTest.bind(this), 1);
cc.director._scheduler.unschedule(this, this.onTimerTest.bind(this));
------------------------------------------------------------------------------
直接调用node注册,可以省略第一个target参数
------------------------------------------------------------------------------
暂时没有发现能直接使用free函数做定时器
posted @ 2017-07-12 15:20 Enic 阅读(296) | 评论 (0)编辑 收藏

2017年6月26日 #

exit 0   #被识别为编译成功
exit 1   #呗识别为编译失败


比15年刚刚接触的时候稍微好用点了,至少svn中文路径,cmake支持,android打包什么的都有了,有必要再深入看一点资料了
另外为了用起来方便命令行还需要多了解点:java -jar jenkins-cli.jar -s http://22.11.140.38:9080/jenkins/  help
posted @ 2017-06-26 14:49 Enic 阅读(192) | 评论 (0)编辑 收藏

2017年6月1日 #


namespace DesignPattern
{
    // 分离M和V的代码
    namespace MV
    {
        class Model
        {

        };

        class View
        {

        };
    };

    // 切断V对M的直接访问,对M操作的代码由C集中完成,M只需要做好更新到V的操作
    namespace MVC
    {
        class Model
        {

        };

        class View
        {

        };

        class Controller
        {

        };
    };

    // 切断M-V的耦合,变化的代码集中到P,做到M和V完全隔离
    namespace MVP
    {
        class Model
        {

        };

        // 在MVP模式里,View只应该有简单的Set/Get的方法,用户用户输入和设置界面显示的内容,
        
// 除此就不应该有更多的内容,绝不容许直接直接访问Model
        class View
        {

        };

        class Presenter 
        {

        };
    };


    // 有了绑定以后实现,其实和MVP好像没什么太大区别,功能几种到VM上
    namespace MVVM
    {
        class Model
        {

        };

        class View
        {

        };

        class ViewModel
        {

        };
    };


}
posted @ 2017-06-01 17:34 Enic 阅读(251) | 评论 (0)编辑 收藏

2017年5月8日 #

不探讨多个线程持有同一个string对象的场景,只分析copy on write特性引起的,拷贝一个新对象发送到另外的线程后引起的安全问题。 假设cow基于reference counting实现,那么ref为2,其中一个线程开始修改,需要找复制,然后减少引用计数,然后操作自己的副本。这种场景下是安全的。但是不是所有的视线rec都是原子操作,所以,,,
posted @ 2017-05-08 22:52 Enic 阅读(302) | 评论 (0)编辑 收藏

2017年4月17日 #

1.bugly sdk整个目录拷贝到cocos_sdk/external
2.在项目中将bugly_sdk/agent/android/*.jar;bugly_sdk/android/*.jar拷贝到项目libs目录.!!!记得要添加到java的Referenced Libraries否则是不生效的。
  当前需要加入进来的是两个jar包,一个sdk的一个插件的
3.在项目中将bugly_sdk/android/*.so拷贝到项目的jni/prebuilt
4.Android.mk文件调整:
#集成libBugly.so,添加在LOCAL_PATH := $(call my-dir)
LOCAL_MODULE := bugly_native_prebuilt
LOCAL_SRC_FILES := prebuilt/$(TARGET_ARCH_ABI)/libBugly.so
include $(PREBUILT_SHARED_LIBRARY)
#引用bugly/Android.mk定义的Module,在LOCAL_STATIC_LIBRARIES := xxx之后
LOCAL_STATIC_LIBRARIES += bugly_crashreport_cocos_static
#添加在末尾
$(call import-module, external/bugly)
5.编辑AndroidManifest.xml添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_LOGS" />
6.初始化
在AppDelegate::applicationDidFinishLaunching()接口调用CrashReport::initCrashReport(addId, debug)
7.实际测试添加完成后大概半小时后生效
posted @ 2017-04-17 19:51 Enic 阅读(2084) | 评论 (0)编辑 收藏

2017年4月16日 #

// plsit测试
cc.log("begin test plist");
cc.spriteFrameCache.addSpriteFrames("res/hall_entrance.plist");
//var imageView = new ccui.ImageView("#hall_enter_3.png");  错误用法,js里边需要通过ccui.Widget.PLIST_TEXTURE参数明确指定
var imageView = new ccui.ImageView("hall_enter_3.png", ccui.Widget.PLIST_TEXTURE);
this.addChild(imageView);




ccui使用:
在project.json中的modules属性修改为:"modules" : ["cocos2d","extensions"],
posted @ 2017-04-16 23:54 Enic 阅读(359) | 评论 (0)编辑 收藏

2017年4月11日 #

Q1:怎么输出日志
A1:cc.log();
Q2: 日志怎么格式化输出
A2:cc.log("%d-%s", 123321, 'abc'); 目测和C类似,估计和console.log也类似,应该基础的js书里边就有,改天专门研究
Q3:为什么获取到的Button、Sprite等控件的contentSize是(0, 0)
A3: 应为没有在resource.js中添加,添加以后就能成功获取到size,表现和native一样了。猜测可能是在图片加载的时候做了预处理。
posted @ 2017-04-11 23:36 Enic 阅读(184) | 评论 (0)编辑 收藏

2017年4月4日 #

// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <cstdarg>
#include <vector>

// 变参函数例子
// 中不包含类型信息,不包含数量信息。相对优雅的解决方式有两个:
// 1.类似printf的方式,通过fmt字符串解决
// 2.类似cocos::Sequence::create的方式,应为全部是动画指针,所以类型是约定好的统一类型,结束标记可以使用NULL标记
void ParametListTest(int nStart, )
{
    // 定义一个参数列表,用于接收解析""
    va_list parametList;

    // 输出第一个参数
    std::cout << nStart << std::endl;

    // nStart是‘’之前最后一个函数参数,用于内存定位,获取parametList
    va_start(parametList, nStart);

    // 里边的具体参数个数是获取不到的
    
// printf的处理和这里不一样:printf根据fmt字符串中的"%"标记来萃取参数类型、数量

    int nTem = 0;
    // 重parametList获取下一个类型为int的变量
    nTem = va_arg(parametList, int);

    // -1作为结束标记
    while (-1 != nTem)
    {
        std::cout << nTem << std::endl;

        nTem = va_arg(parametList, int);
    }

    va_end(parametList);
}


// 模版参数最后一个递归(带重载的递归)
void TParametListTest()
{
}

// C++ 1x变参模版
template<typename T, typename  Args>
void TParametListTest(T nStart, Args  args)
{
    std::cout << nStart << std::endl;

    // 可以直接展开多参数的定义
    
// 递归一次参数减少一个,最后会调用void重载
    TParametListTest(args);
}





int main()
{
    // 假设需要实现的功能是输出,这个demo已经满足条件
    
// 假设需要实现的是类似cocos的时序动画功能,其实把std::cout换成成员变量,或者某个全局函数即可实现

    ParametListTest(1, 2, 3, 3, 3, 3, -1);
    std::cout << "----------------------------" << std::endl;
    TParametListTest(1, 2, 3, 3, 3, 3);  // 采用1X可变模版参数语法实现的,可以抹掉末尾的结束标记

    return 0;
}
posted @ 2017-04-04 13:11 Enic 阅读(887) | 评论 (0)编辑 收藏

2017年4月1日 #

#filename: boost-1-60-0\tools\build\src\user-config.jam
#b2.exe toolset=gcc-ndk4.8 --without-math link=static runtime-link=static target-os=linux --stagedir=android
#bjam.exe toolset=gcc-ndk4.8 --without-math link=static runtime-link=static target-os=android --stagedir=android
import os ;  
   
if [ os.name ] = CYGWIN || [ os.name ] = NT {  
androidPlatform = windows-x86_64 ;  
}  
else if [ os.name ] = LINUX {  
androidPlatform = linux-x86_64 ;  
}  
else if [ os.name ] = MACOSX {  
androidPlatform = darwin-x86 ;  
}  
   
modules.poke : NO_BZIP2 : 1 ;  
ANDROID_NDK = D:/Cocos/android_ndk/android-ndk-r10d ;  
using gcc : ndk4.8 : 
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :  
<archiver>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar  
<ranlib>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.8/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib  
<compileflags>--sysroot=$(ANDROID_NDK)/platforms/android-9/arch-arm  
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.8/include  
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi/include  
<compileflags>-DNDEBUG  
<compileflags>-D__GLIBC__  
<compileflags>-DBOOST_FILESYSTEM_VERSION=3  
<compileflags>-lstdc++  
<compileflags>-lgnustl_shared  
<compileflags>-mthumb  
<compileflags>-fno-strict-aliasing  
<compileflags>-std=c++11  
<compileflags>-O2  
;  
using gcc : ndk4.9 : 
$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :  
<archiver>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar  
<ranlib>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.9/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ranlib  
<compileflags>--sysroot=$(ANDROID_NDK)/platforms/android-9/arch-arm  
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/include  
<compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include  
<compileflags>-DNDEBUG  
<compileflags>-D__GLIBC__  
<compileflags>-DBOOST_FILESYSTEM_VERSION=3  
<compileflags>-lstdc++  
<compileflags>-lgnustl_shared  
<compileflags>-mthumb  
<compileflags>-fno-strict-aliasing  
<compileflags>-std=c++11  
<compileflags>-O2  
;  
posted @ 2017-04-01 14:51 Enic 阅读(303) | 评论 (0)编辑 收藏

仅列出标题  下一页