• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            #

            我們的工程使用notepad++掛載protobuf的protoc代碼生成器, 每次生成后, 助手都要手動parse一次, 很麻煩. 研究了下VC助手的選項, 按下圖配置即可靜默刷新文件

            image

            posted @ 2013-11-13 10:39 戰(zhàn)魂小筑 閱讀(1662) | 評論 (1)編輯 收藏

            http://www.andersriggelsen.dk/glblendfunc.php

            即便是老外的教科書也是晦澀的,不如幾行js來的爽快

            posted @ 2013-11-12 13:58 戰(zhàn)魂小筑 閱讀(1890) | 評論 (0)編輯 收藏

            我使用的是VS2010, 老版本的未測

            call "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
                cd 你的工程sln目錄

            MSBuild “你的工程.sln” /t:Build /p:Configuration=Release /maxcpucount:4

            解釋: 首先調用VC上下文建立批處理, 轉到你的sln目錄,保證工作目錄正確, /maxcpucount是并行編譯, 根據(jù)你的需求配置即可

            posted @ 2013-11-05 15:20 戰(zhàn)魂小筑 閱讀(2611) | 評論 (1)編輯 收藏

            距離第一次使用HG已經由2,3年了。 從第一次將HG用于自己的項目, 用U盤同步代碼. 到現(xiàn)在將HG應用于linux, 版本差異發(fā)布, 項目內部多人的分布式開發(fā),已經感覺非常熟練。

            我們的項目的客戶端和服務器均由C++開發(fā),由于HG設計的理念是1個工程對應1個庫, 因此我們的客戶端和服務器是分開的兩個HG代碼庫。這種思想和SVN管理的代碼有很大不同。SVN時代的游戲工程大多是這樣安排目錄的:

            common <-客戶端和服務器共享的庫

            client<-客戶端的代碼

            server<-服務器的代碼

            通過SVN強大的權限控制給不同的前后端賦予權限,前后端程序將獲得不同的目錄組合。SVN下的這種工程組織方法能很好的解決單一語言跨工程的代碼,協(xié)議共享問題。雖然現(xiàn)在各種Erlang,Java的服務器語言與as3,lua的不同客戶端腳本語言混雜的時代已經無所謂這種老式設計思想。但是對于我們純C++的手游來說,還是必須面對分布式代碼管理工具下的代碼跨庫共享問題。

            我就這個問題與多年前被我推薦過HG的朋友討論起來,他們也存在我們這個問題,但是他們的解決方法就是每個工程一個庫。然后被我問到:“同步一次代碼,一次次的打開不同的庫(他們客戶端+服務器一共6到7個HG代碼庫),進行同步, 完成后, 還要反向pull,不累啊?”, 朋友回答:“習慣就好”

            隨后,我也翻查了git對多項目的支持。得到的答案也是跟HG一樣的, 這類分布式代碼管理工具本身的設計理念只有賬號,而無權限, 本身就是基于開源代碼精神設計的工具, 如果分了權限,豈不是違背開源精神(這是我想的微笑)。因此如果想管理多個項目代碼, 要么多庫,要么合庫。

            posted @ 2013-10-25 22:51 戰(zhàn)魂小筑 閱讀(2642) | 評論 (2)編輯 收藏

            將boost更新到1.53時, 發(fā)現(xiàn)luabind死活編譯不過, 報錯如下

            error: missing binary operator before token "("

            根據(jù)老外的描述, boost中的BOOST_PP_ITERATION_FLAGS從1.49版本后發(fā)生了一些變化.

            在git找到一個patch, 鏈接在此

            以下簡單描述

            修改call_function.hpp, call_member.hpp及wrapper_base.hpp

            去掉#elif BOOST_PP_ITERATION_FLAGS() == 1

            更換為

            #else

            #if BOOST_PP_ITERATION_FLAGS() == 1

            然后在源碼底部加一個#endif即可

            posted @ 2013-09-24 16:46 戰(zhàn)魂小筑 閱讀(2340) | 評論 (0)編輯 收藏

            最近發(fā)現(xiàn)一個Qt寫的切圖軟件, 導入PNG圖片可以顯示, 而JPEG圖片無法顯示. 開發(fā)機正常. Google了一下, 發(fā)現(xiàn)Qt通過外部插件機制支持各種擴展功能.

            在啟動前, 添加如下代碼:

            QApplication qapp(argc, argv);   

            qapp.addLibraryPath(QCoreApplication::applicationDirPath()+"/plugins");

            將QT開發(fā)目錄下: Qt\4.8.2\plugins\拷貝到Qt的exe目錄即可

            posted @ 2013-08-10 09:44 戰(zhàn)魂小筑 閱讀(780) | 評論 (0)編輯 收藏

            這里不能不說Google確實搜了1天都沒解決問題, baidu第一個就解決了...

            cygwin參考這里

            http://my.oschina.net/tonywolf/blog/49214

            簡單的說

            1.下載cygwin的網絡安裝包(第一次安裝只能這樣)

            2. 選擇靠前一點的網站進行下載( 下好的包可以留著, 下次安裝直接從文件夾中選擇就可以安裝)

            cygwin下使用NDK編譯boost參考這里

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

            細節(jié)注意:

            1. boost官網下載boost_1_53_0.tar.bz2, 解壓放在android-ndk-r8e/sources下

            2. 生成boost編譯工具: 在boost目錄下運行 ./bootstrap.sh 或者 bootstrap.bat 生成 b2

            3. 修改 boost/tools/build/v2/user-config.jam 內容修改如下

            import os ;
             
            if [ os.name ] = CYGWIN || [ os.name ] = NT {
            androidPlatform = windows ;
            }
            else if [ os.name ] = LINUX {
            androidPlatform = linux-x86_64 ;
            }
            else if [ os.name ] = MACOSX {
            androidPlatform = darwin-x86 ;
            }
             
            modules.poke : NO_BZIP2 : 1 ;
            ANDROID_NDK = ../.. ;
            using gcc : android4.6 : $(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-g++ :
            <archiver>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/prebuilt/$(androidPlatform)/bin/arm-linux-androideabi-ar
            <ranlib>$(ANDROID_NDK)/toolchains/arm-linux-androideabi-4.6/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.6/include
            <compileflags>-I$(ANDROID_NDK)/sources/cxx-stl/gnu-libstdc++/4.6/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=gnu++11
            <compileflags>-O2
            ;
             

            4. 為了安全起見, 我打了個BoostForAndriod上的補丁: 手動修改下就好了

             

            diff -ruN boost_1_53_0-boot/boost/asio/detail/socket_types.hpp boost_1_53_0-patched/boost/asio/detail/socket_types.hpp
            --- boost_1_53_0-boot/boost/asio/detail/socket_types.hpp     2012-01-15 14:46:25.000000000 +0100
            +++ boost_1_53_0-patched/boost/asio/detail/socket_types.hpp     2012-06-27 19:19:01.279562338 +0200
            @@ -123,7 +123,12 @@
            typedef int socket_type;
            const int invalid_socket = -1;
            const int socket_error_retval = -1;
            +// @Moss - Some platforms do not define it (Android)
            +#if defined(INET_ADDRSTRLEN)
            const int max_addr_v4_str_len = INET_ADDRSTRLEN;
            +#else // defined(INET_ADDRSTRLEN)
            +const int max_addr_v4_str_len = 16;
            +#endif // defined(INET_ADDRSTRLEN)
            #if defined(INET6_ADDRSTRLEN)
            const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
            #else // defined(INET6_ADDRSTRLEN)
            diff -ruN boost_1_53_0-boot/boost/asio/ip/impl/address_v6.ipp boost_1_53_0-patched/boost/asio/ip/impl/address_v6.ipp
            --- boost_1_53_0-boot/boost/asio/ip/impl/address_v6.ipp     2012-01-15 14:46:25.000000000 +0100
            +++ boost_1_53_0-patched/boost/asio/ip/impl/address_v6.ipp     2012-06-27 19:19:11.029581297 +0200
            @@ -11,6 +11,23 @@
            #ifndef BOOST_ASIO_IP_IMPL_ADDRESS_V6_IPP
            #define BOOST_ASIO_IP_IMPL_ADDRESS_V6_IPP
             
            +// @Moss - Define IPv6 macros
            +#if !defined(IN6_IS_ADDR_MULTICAST) 
            +#define IN6_IS_ADDR_MULTICAST(a) (((__const uint8_t *) (a))[0] == 0xff)
            +#endif
            +
            +#if !defined(IN6_IS_ADDR_MC_NODELOCAL)
            +#define IN6_IS_ADDR_MC_NODELOCAL(a) \
            +        (IN6_IS_ADDR_MULTICAST(a) \
            +         && ((((__const uint8_t *) (a))[1] & 0xf) == 0x1))
            +#endif
            +
            +#if !defined(IN6_IS_ADDR_MC_GLOBAL)
            +#define IN6_IS_ADDR_MC_GLOBAL(a) \
            +        (IN6_IS_ADDR_MULTICAST(a) \
            +         && ((((__const uint8_t *) (a))[1] & 0xf) == 0xe))
            +#endif
            +
            #if defined(_MSC_VER) && (_MSC_VER >= 1200)
            # pragma once
            #endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
            diff -ruN boost_1_53_0-boot/boost/config/user.hpp boost_1_53_0-patched/boost/config/user.hpp
            --- boost_1_53_0-boot/boost/config/user.hpp     2004-01-10 13:10:00.000000000 +0100
            +++ boost_1_53_0-patched/boost/config/user.hpp     2012-06-27 19:18:46.129532736 +0200
            @@ -13,6 +13,15 @@
            //  configuration policy:
            //
             
            +// Android defines
            +#define __arm__ 1
            +#define _REENTRANT 1
            +#define _GLIBCXX__PTHREADS 1
            +// There is problem with std::atomic on android (and some other platforms).
            +// See this link for more info:
            +// https://code.google.com/p/android/issues/detail?id=42735#makechanges
            +#define BOOST_ASIO_DISABLE_STD_ATOMIC 1
            +
            // define this to locate a compiler config file:
            // #define BOOST_COMPILER_CONFIG <myheader>
             
            diff -ruN boost_1_53_0-boot/boost/detail/endian.hpp boost_1_53_0-patched/boost/detail/endian.hpp
            --- boost_1_53_0-boot/boost/detail/endian.hpp     2011-03-29 23:58:48.000000000 +0200
            +++ boost_1_53_0-patched/boost/detail/endian.hpp     2012-06-27 19:18:39.359519453 +0200
            @@ -31,7 +31,7 @@
            // GNU libc offers the helpful header <endian.h> which defines
            // __BYTE_ORDER
             
            -#if defined (__GLIBC__)
            +#if defined (__GLIBC__) || defined(ANDROID)
            # include <endian.h>
            # if (__BYTE_ORDER == __LITTLE_ENDIAN)
            #  define BOOST_LITTLE_ENDIAN
            diff -ruN boost_1_53_0-boot/boost/interprocess/detail/workaround.hpp boost_1_53_0-patched/boost/interprocess/detail/workaround.hpp
            --- boost_1_53_0-boot/boost/interprocess/detail/workaround.hpp     2011-12-26 18:21:36.000000000 +0100
            +++ boost_1_53_0-patched/boost/interprocess/detail/workaround.hpp     2012-06-27 19:18:52.909546004 +0200
            @@ -54,7 +54,7 @@
                #endif
             
                //Check for XSI shared memory objects. They are available in nearly all UNIX platforms
            -   #if !defined(__QNXNTO__)
            +   #if !defined(__QNXNTO__) && !defined(ANDROID)
                   #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS
                #endif
             
            diff -ruN boost_1_53_0-boot/libs/filesystem/src/operations.cpp boost_1_53_0-patched/libs/filesystem/src/operations.cpp
            --- boost_1_53_0-boot/libs/filesystem/src/operations.cpp     2012-01-28 15:40:16.000000000 +0100
            +++ boost_1_53_0-patched/libs/filesystem/src/operations.cpp     2012-06-27 19:19:19.269597266 +0200
            @@ -73,13 +73,15 @@
                 const fs::path dot_dot_path("..");
            #   include <sys/types.h>
            #   include <sys/stat.h>
            -#   if !defined(__APPLE__) && !defined(__OpenBSD__)
            +#   if !defined(__APPLE__) && !defined(__OpenBSD__) && !defined(__ANDROID__) && !defined(ANDROID)
            #     include <sys/statvfs.h>
            #     define BOOST_STATVFS statvfs
            #     define BOOST_STATVFS_F_FRSIZE vfs.f_frsize
            #   else
            #     ifdef __OpenBSD__
            #     include <sys/param.h>
            +#     elif defined(__ANDROID__) || defined(ANDROID) // @Moss - Android messes up a bit with some headers, this one is the correct one :D
            +#     include <sys/vfs.h>
            #     endif
            #     include <sys/mount.h>
            #     define BOOST_STATVFS statfs
            @@ -206,7 +208,19 @@
                      || ::mkdir(to.c_str(),from_stat.st_mode)!= 0))
            #   define BOOST_COPY_FILE(F,T,FailIfExistsBool)copy_file_api(F, T, FailIfExistsBool)
            #   define BOOST_MOVE_FILE(OLD,NEW)(::rename(OLD, NEW)== 0)
            +#if defined(__ANDROID__) || defined(ANDROID)
            +    int BOOST_RESIZE_FILE(const char *path, off_t size)
            +    {
            +      int result = -1;
            +      int fd = open(path, O_WRONLY);
            +      if (fd != -1)
            +        result = ftruncate(fd, size);
            +      close(fd);
            +      return result;
            +    }
            +#else
            #   define BOOST_RESIZE_FILE(P,SZ)(::truncate(P, SZ)== 0)
            +#endif
             
            #   define BOOST_ERROR_NOT_SUPPORTED ENOSYS
            #   define BOOST_ERROR_ALREADY_EXISTS EEXIST

             

            5. 命令行編譯:

            ./b2 --without-python --without-mpi --without-serialization toolset=gcc-android4.6 link=static runtime-link=static target-os=linux --stagedir=android

            使用編譯完成的boost庫

            1. 將編譯boost_1_53_0\android\lib\ 下的.a庫 及boost_1_53_0\boost\下的頭文件拷貝出來放在工程的boost4android目錄下

            2. 在boost4android目錄下,創(chuàng)建Android.mk, 內容如下

            LOCAL_PATH:= $(call my-dir)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_atomic
            LOCAL_SRC_FILES:= lib/libboost_atomic.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_chrono
            LOCAL_SRC_FILES:= lib/libboost_chrono.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_context
            LOCAL_SRC_FILES:= lib/libboost_context.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_date_time
            LOCAL_SRC_FILES:= lib/libboost_date_time.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_exception
            LOCAL_SRC_FILES:= lib/libboost_exception.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_filesystem
            LOCAL_SRC_FILES:= lib/libboost_filesystem.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_graph
            LOCAL_SRC_FILES:= lib/libboost_graph.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_iostreams
            LOCAL_SRC_FILES:= lib/libboost_iostreams.a 
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_c99
            LOCAL_SRC_FILES:= lib/libboost_math_c99.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_c99f
            LOCAL_SRC_FILES:= lib/libboost_math_c99f.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_c99l
            LOCAL_SRC_FILES:= lib/libboost_math_c99l.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_tr1
            LOCAL_SRC_FILES:= lib/libboost_math_tr1.a 
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_tr1f
            LOCAL_SRC_FILES:= lib/libboost_math_tr1f.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_math_tr1l
            LOCAL_SRC_FILES:= lib/libboost_math_tr1l.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_program_options
            LOCAL_SRC_FILES:= lib/libboost_program_options.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_random
            LOCAL_SRC_FILES:= lib/libboost_random.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_regex
            LOCAL_SRC_FILES:= lib/libboost_regex.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_system
            LOCAL_SRC_FILES:= lib/libboost_system.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_thread
            LOCAL_SRC_FILES:= lib/libboost_thread.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            include $(CLEAR_VARS)
            LOCAL_MODULE:= boost_timer
            LOCAL_SRC_FILES:= lib/libboost_timer.a
            LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
            include $(PREBUILT_STATIC_LIBRARY)
             
            可以根據(jù)自己的需要調整以上包含
             
            3. 在應用程序的Android.mk中添加

            LOCAL_WHOLE_STATIC_LIBRARIES += boost_system
            LOCAL_WHOLE_STATIC_LIBRARIES += boost_filesystem
            LOCAL_WHOLE_STATIC_LIBRARIES += boost_thread

            用多少, 包多少

            添加異常支持 LOCAL_CPPFLAGS += –fexceptions

             

            添加模塊引用

            $(call import-module,boost4android)

            posted @ 2013-07-20 16:23 戰(zhàn)魂小筑 閱讀(3537) | 評論 (2)編輯 收藏

            protobuf就是為懶人而造的工具, 啥協(xié)議, 啥配置文件, 統(tǒng)統(tǒng)定義proto, 解析就ok, 非常方便

             

            文本格式的解析錯誤不能使用捕獲錯誤來獲取, 因此,我們需要使用自定義的錯誤收集器進行收集, 看代碼:

            #include <google/protobuf/text_format.h>
            #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
            #include <google/protobuf/io/tokenizer.h>
             
            class PBTextErrorCollector : public google::protobuf::io::ErrorCollector
            {
            public:
                PBTextErrorCollector( const std::string& FileName )
                    : mFileName( FileName )
                {
             
                }
             
                virtual void AddError(int line, int column, const string& message)
                {
                    CCLog("%s(%d:%d) %s ", mFileName.c_str(), line, column, message.c_str() );
                }
             
                virtual void AddWarning(int line, int column, const string& message) 
                {
                    CCLog("%s(%d:%d) %s ", mFileName.c_str(), line, column, message.c_str() );
                }
             
            private:
                std::string mFileName;
            };
             

            解析代碼

            google::protobuf::TextFormat::Parser P;        
                P.RecordErrorsTo( &PEC );
                P.Parse( &AIS, &AF );

             

            另外: 文本格式的注釋使用unix shell風格: 以#開頭

            下面是我的文本格式的配置文件

             

            AnchorPointX: 0.5
            AnchorPointY: 0
            
            SpriteScale: 2
            
            ComponentName: "ActorActionManager"
            ComponentName: "ActorFrameEventDispatcher"
            #ComponentName: "SoundFXController"
            ComponentName: "RoleDeltaMoveController"
            ComponentName: "RoleBehaviorDirector"
            
            InitAction: AA_Idle
            
            Animations 
            {
              AnimationName: "mai_idle"
              AnimationInterval: 0.067
            }
            
            posted @ 2013-07-09 18:29 戰(zhàn)魂小筑 閱讀(7022) | 評論 (2)編輯 收藏

            c++0x中已經添加了諸如function, bind等需要boost支持的功能, 不再需要編譯復雜的boost了

            在你的Android.mk文件中添加 LOCAL_CPPFLAGS += -std=gnu++0x即可

            posted @ 2013-07-01 16:09 戰(zhàn)魂小筑 閱讀(2210) | 評論 (1)編輯 收藏

            最近調試程序發(fā)現(xiàn)空指針老無法定位, 使用一個最簡單的main函數(shù)做空指針檢查也一樣, 具體癥狀見圖

            image

            pdb加載是正常的, 但是堆棧沒顯示如此簡單的空指針訪問位置. Google了以下

            http://blogs.msdn.com/b/debugger/archive/2010/05/12/visual-studio-debugger-fails-to-catch-unhandled-exception-for-a-windows-form-or-wpf-application.aspx

            解決方法: Debug->Exception中將所有異常勾選即可

             

            不知道哪里的設置導致如此詭異的問題, 害的我重裝一次..

            posted @ 2013-06-27 11:05 戰(zhàn)魂小筑 閱讀(2307) | 評論 (0)編輯 收藏

            僅列出標題
            共26頁: First 3 4 5 6 7 8 9 10 11 Last 
            一本色道久久99一综合| 91亚洲国产成人久久精品网址| 91精品观看91久久久久久| 国内精品久久久久久久影视麻豆| 久久伊人中文无码| 日日噜噜夜夜狠狠久久丁香五月| 久久综合九色综合久99| 日韩中文久久| 久久综合综合久久狠狠狠97色88| 人妻精品久久久久中文字幕| 狼狼综合久久久久综合网| 99久久国产免费福利| 久久国产免费直播| 久久亚洲中文字幕精品一区| 精品久久久久久国产潘金莲| 欧美一级久久久久久久大| 99久久精品国产免看国产一区| 亚洲精品乱码久久久久久不卡| 2021少妇久久久久久久久久| 久久久午夜精品| 精品无码久久久久久久动漫| 97久久精品人妻人人搡人人玩| 久久影院午夜理论片无码| 日本精品久久久久中文字幕8| 久久久婷婷五月亚洲97号色| 午夜视频久久久久一区 | 91精品国产91久久久久福利| 久久久精品人妻无码专区不卡 | 99国内精品久久久久久久| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 久久精品国产精品亚洲人人| 色偷偷久久一区二区三区| 亚洲?V乱码久久精品蜜桃| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 亚洲国产欧洲综合997久久| 午夜精品久久久久| 亚洲国产成人精品女人久久久 | 亚洲第一永久AV网站久久精品男人的天堂AV| 色综合久久综精品| 国产精品女同一区二区久久| 国产精品99久久不卡|