У меня есть рабочий проект Cocos2d-x, разработанный в XCode и основанный на версии cocos2d-1.0.1-x-0.13.0-beta
Теперь я должен заставить его работать с Marmalade (используя VS Express на ПК с Windows), и я совершенно новичок в этом. Мне удалось настроить проект, и исходный код прекрасно компилируется, но когда я запускаю проект, я получаю загадочное исключение, когда вызывается CCCallFuncO:
DEFAULT: s3eDeviceHandleException: 1 0x00000000 0x00000000
Memory exception (11) attempting to access: 00000000
S3E runtime is not handling this exception
First-chance exception at 0x00000000 in s3e_simulator_debug.exe: 0xC0000005: Access violation.
Unhandled exception at 0x00000000 in s3e_simulator_debug.exe: 0xC0000005: Access violation reading location 0x00000000.
Это происходит внутри класса CCActionInstant, внутри метода CCCallFuncO :: execute, по инструкции:
(m_pSelectorTarget->*m_pCallFuncO)(m_pObject);
Насколько я могу судить, все задействованные объекты являются правильными и надежными, доказательство тому, что он полностью работает и имеет смысл с тем же кодом внутри XCode и без Marmalade.
В чем разница между этими двумя средами, которые могут вызвать эту проблему?
Любой из вас, кто имеет опыт работы с мармеладом, может подсказать, что мне искать?
Я отвечаю на свой вопрос, просто чтобы другие разработчики знали, как я решил эту проблему.
Оказалось, что проблема с симулятором Marmalade не имеет ничего общего с кодом.
Если вы столкнулись с проблемой, похожей на мою, и я имею в виду, что при попытке запустить ваше приложение на симуляторе мармелада вы получите очень неопределенное исключение — прежде чем пытаться что-либо еще, я могу предложить вам удалить подпапку мармелада и заново создать проект. из файла .mkb.
Это, очевидно, стирает некоторый кеш и предварительно скомпилированный объект, который может быть не синхронизирован с вашим реальным кодом.
Удаление подпапки мармелада заставляет компилятор заново создавать все заново.
Других решений пока нет …