2012-09-09 14 views
5

Tôi đã chuyển thành công trò chơi của mình lên Cocos2d-x và chạy tốt trên Linux, QNX, iOS và Mac. Tôi cũng đã thiết lập NDK của Android và có thể xây dựng và chạy ứng dụng thành công trên Android (tất cả từ cùng một nguồn chính xác, thực sự gọn gàng!)Lớp SimpleJSON C++ không thể phân tích chuỗi trên Android (NDK) nhưng cùng một lớp hoạt động trên mọi nền tảng khác

Trên Android có một điều kỳ lạ xảy ra: SimpleJSON .cpp class Tôi đang sử dụng không thể phân tích cú pháp các chuỗi JSON được định dạng chính xác. Tôi đang sử dụng khung này: https://github.com/MJPA/SimpleJSON

Tôi đã xem xét mã, nhưng tôi không phải là chuyên gia CPP để xem có gì sai (nó hoạt động trên mọi nền tảng ngoại trừ Android và biên dịch khỏe).

Tôi đã nhận thấy Lớp sử dụng wchar_t khá rộng rãi và tôi cũng hiểu rằng đó có thể là sự cố trên Android.

Dù sao thì tôi đã tìm ra cách để làm việc này trong 48 giờ qua, nhưng tôi đã thất bại thảm hại. Có ai ngoài kia có thể chỉ cho tôi đúng hướng không?

Có tùy chọn trình biên dịch nào mà tôi quên đặt không? Lớp học này sẽ không hoạt động trên Android? Tôi làm cách nào để thay đổi lớp học để có thể hoạt động bình thường trên Android?

Tất cả các gợi ý đều được chào đón.

Rgds.

+0

Vui lòng đăng mã cho SimpleJSON.cpp hoặc bạn đang nói về JSON.cpp mà bạn có thể tìm thấy nếu bạn theo liên kết của mình? – john

+0

Cảm ơn. Tôi đã thực sự nói về các tệp JSON.cpp và JSONValue.cpp có thể được tìm thấy trong repo github. Tôi đã nhìn xung quanh trong Android bao gồm và nó xuất hiện rằng việc thực hiện wchar.h chỉ là mỹ phẩm (đó là một remap để char). Tôi đã thay đổi tất cả các tham chiếu trong các lớp JSON từ wchar thành char và từ wstring thành string. Tôi vẫn đang thử nghiệm những thay đổi nhưng có vẻ như điều này giải quyết được vấn đề của tôi (ít nhất là trên các chuỗi JSON của Android được phân tích cú pháp chính xác). Tôi vẫn phải kiểm tra những thay đổi trên các nền tảng khác mặc dù (nhưng tôi không mong đợi bất kỳ bất ngờ có). – TomBombadil

+4

Để tham khảo trong tương lai: đây là nhận xét trong wchar.h: QUAN TRỌNG: Bất kỳ mã nào dựa vào hỗ trợ ký tự rộng về bản chất là không thể di chuyển và/hoặc bị hỏng. lý do duy nhất mà tiêu đề này tồn tại là vì tôi thực sự là một người tốt. Tuy nhiên, tôi không đủ tốt để cung cấp cho bạn một triển khai thực sự. thay vào đó wchar_t == char và tất cả các hàm wc đều được khai báo tương đương "bình thường" ... – TomBombadil

Trả lời

0

Đảm bảo sử dụng khung mới nhất. Cũng tìm #if được xác định (ANDROID) trong mã, có thể có lỗi khi biên dịch cho Android.

Các vấn đề liên quan