sexta-feira, 19 de setembro de 2008

Portando Aplicativo Windows Ce de X86 para ARM

Palavras Chave: Pocket PC Windows CE Win CE

Essa semana me foi passada a tarefa de portar um aplicativo que temos para ThinClients Windows CE rodando em processadores X86 para Windows CE Pocket PC 2003 em ARM.

Bom, comecei criando o solution para o ARM copiando as configurações do X86 ja existentes e trocando na mãos os defines" onde necessário.
Tudo compilou legal ate que na hora de "linkar" fui presenteado com algumas dezenas de erros.
Foram muitos erros mas a maioria deles reclamava da mesma coisa
Abaixo mostro o copy-and-paste de alguns deles:

error LNK2001: unresolved external symbol "public: __cdecl std::exception::exception(char const *)" (??0exception@std@@QAA@PBD@Z)
error LNK2001: unresolved external symbol "const type_info::`vftable'" (??_7type_info@@6B@)
error LNK2001: unresolved external symbol "public: virtual char const * __cdecl std::exception::what(void)const " (?what@exception@std@@UBAPBDXZ)
error LNK2001: unresolved external symbol "public: virtual __cdecl std::exception::~exception(void)" (??1exception@std@@UAA@XZ)

Percebi que praticamente todos símbolos estavam relacionados as classes de tratamento de exceção.
Futuca aqui mexi ali e nada.
Até que resolvi criar um solution do zero para verificar quais configurações o Visual Studio 2005 colocava em seus projetos.

Resolvi olhar no stdafx.h criado por default e vejo isso:

#if (_WIN32_WCE < 0x500) && ( defined(WIN32_PLATFORM_PSPC) ||
defined(WIN32_PLATFORM_WFSP) )
#pragma comment(lib, "ccrtrtti.lib")
#ifdef _X86_
#if defined(_DEBUG)
#pragma comment(lib, "libcmtx86d.lib")
#else
#pragma comment(lib, "libcmtx86.lib")
#endif
#endif
#endif

Hum...interessante.
Nos projetos ARM ele inclui o ccrtrtti.lib.
Pesquisando na internet encontro isso.
Pronto, mexi nas propriedades do vcproj e mandei incluir o ccrtrtti.lib e tudo foi perfeito.
Bom, agora só falta testar no dispositivo. Se tiver alguma coisa de interessante postarei aqui.
Se quiser saber mais para que serve o ccrtrtti.lib basta ler o link inserido anteriormente.
Minhas restrições de tempo me impedem de escrever detalhes.
[]'s

Leonardo X. T. Cardoso
blog comments powered by Disqus