代码从windows下visual studio到andriod平台迁移实现步骤:前言前言也是迁言,从windows的visual studio 2012平台迁移到Android平台上,需用修改挺多的代码和需用注意地方。
我们当然的平台当初就考虑了其他平台跨平台的应用问题,所以一开始在windows下就是用cmake来完成工程的建立的,cMakeLists.txt文件都做了一些处理,但是此时只是更针对或说首先保证windows下的编译和使用。
谨此做个记录。
1. modify cMakeLists.txt file,add android define and macro.2.cmake ./../Build files have been written to: /home/andriod_a/build3.size_t problem add <cstddef> head file.4.error: extra qualification "rw::scoped_lock::" on member "scoped_lock" [-fpermissive] remove the class identifier. 5. memcpy define in <string.h> .so change it.6.no match for "operator=" in "inverse = rw_math::matrix3f::operator*(float) const((1.0e+0f / det))"//inverse = inverse * (1.0f/det);matrix3f temp = inverse * (1.0f/det);inverse = temp;7.no match for "operator=" in "rot_mat = rw_math::matrix4f::make_rotation_matrix( matrix4f matrix4f_tmp = make_rotation_matrix(axis_,angle_in_rad_);rot_mat = matrix4f_tmp;8.warning: inline function "double const& rw_math::vector3d::operator[](int) const" used but never defined [enabled by default]9.error: "memcmp" was not declared in this scope #include <string.h> 10.initializing argument 2 of "char* strncat(char*, char const*, size_t)" [-fpermissive]11.compile jpeg library. copy source code,then write or change cMakeLists.txt,then create a buid file,open terminal in the new build file.cmake ./../ ,the last is make ,and it will show u.12.multiple definition of "std::__lg(int)i define the inline,so error.13. the inline function which must achieve in head file ,and could not in *.cpp file. or,u can delete inline word in head files.14. conflicts with previous declaration "typedef class rw::rw_shared_ptr<rw_json::json_value_iterator> rw_json::json_value_iterator::ptr" multidefine .15.no matching function for call to "transform()transform(ext_.begin(), ext_.end(), ext_.begin(), ::tolower);16. temp varity can"t assign to non-const reference.rw_shared_ptr_shadow temp_shadow = entity_.to_shared_ptr_shadow();pt2model_entity_define::ptr temp_ptr = temp_shadow.to_shared_ptr<pt2model_entity_define>();build_pt2model_entity(_pGeometry,_pSymbol,temp_ptr);17.fatal error: jsonjson.h: No such file or director#include <jsonjson.h> ----->#include <json/json.h>18.fatal error: zlib\zconf.h: No such file or directory----->#include "zlib/zlib.h"19. error: cannot pass objects of non-trivially-copyable type "const mapped_type {aka const struct std::basic_string<char>}" through ".--->(content_type_field).c_str();20.537:49: error: invalid initialization of non-const reference of type "std::string& {aka std::basic_string<char>&}" from an rvalue of type "std::string {aka std::basic_string<char>}"string temp_str = request_.get()->get_url();string& tmp_req_url = temp_str;21. error: no matching function for call temp variaty problem. make a temp variaty.matrix4d temp_mat = world_mat * t_mat;render_system_->set_world_matrix(temp_mat);22.abs()--->fabs();23.rw_terrian_manager.h:69:12: error: "terrian_tile" was not declared in this scopecan not recongize the friend class in GCC ,so chang forward declaration.#ifdef __linux__class terrian_tile;#endif24. Windows.h: No such file or directorylinux not compile this model,and commit it.25.itoa---->#include <sstream>std::ostringstream oss;std::string str = "";oss << _counter;str = oss.str();26.error: taking address of temporary box3d bbox = (instances_[i]->get_bounding());if (!manipulate_geo_hash(instances_[i]->get_id(), &bbox, update_geo_hash))ta27.error: no matching function for call to "transform(std::basic_string<char>::iterator, std::basic_string<char>::iterator, std::basic_string<char>::iterator, <unresolved overloaded function type>)"transform(_texture_type.begin(), _texture_type.end(), _texture_type.begin(), ::tolower);28.GetModuleFileName((HINSTANCE)&__ImageBase,buffer,256);#include <stdio.h>------->string buffer = getcwd(NULL, 0);string execution_path= buffer;29. xstring ----><string>30.invalid cast of an rvalue expression of type "rw::multi_point::ptr {aka rw::rw_shared_ptr<rw::multi_point>}" to type "rw::multi_point*&"temp variable error.31.error: "atof" was not declared in this scopestd::stringstream oss;int temp_int;oss << _pri_string;oss >> temp_int;_var = temp_int;32.error: conflicts with previous declarationu known, have more than one define in u"s file.so,find and delete it.33.malloc no declear.#include <malloc.h>34. image_info_->image_type = image_type_; rw_image :image_type("ccccccccccccccccc"), 35. don"t write like this._runtime->register_service(_aaaa_multi_service_pid, get_aaa_multi_service());((_driver_multi_service_impl*)get_aaa_multi_service())->init(_runtime); ((_driver_multi_service_impl*)get_aaa_multi_service())->set_runtime(_runtime); 36. register_service at last place when add_multi_service.((terrian_data_sqlite_service_impl*)tms)->init();_runtime->register_service(terrian_data_sqlite_service_pid, tms );37.dom does not show,because android system does not support multi-therad rendering.so ,put the upload in draw thread.38.please set RW_INDEX rw_uint16 in rw_render_object_creator.cpp when u compile the code in android system,otherwise leave it alone.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!