загрузить SDK с официального сайта, а также создать новый проект с помощью следующих команд:Нерешенные внешние символы защищены: «пустота __thiscall cocos2d :: Console :: петля (аннулируются)»
cocos new foo -p com.foo.bar -l cpp -d .
Таким образом, новый проект foo
и я вхожу в его каталог. Я знаю, что proj.win32
имеет файлы решений для предварительно созданной визуальной студии. Но я хочу восстановить их с CMakeLists.txt
в корневом каталоге проекта.
Итак, я mkdir -p cmake-out/vs2012
, введите каталог и . Все в порядке, файлы решений построены cmake, поэтому я перестроил целое решение в visual studio. Компиляция все прошло *, но окончательный процесс ссылка не потому, что следующие ошибки:
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::loop(void)" ([email protected]@[email protected]@IAEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::addClient(void)" ([email protected]@[email protected]@IAEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::commandExit(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::loop(void)" ([email protected]@[email protected]@IAEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::commandUpload(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::loop(void)" ([email protected]@[email protected]@IAEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: void __thiscall <lambda_18a69eabc233d9cfc5fb2fb65c07cfe6>::operator()(void)const " (??R<lambda_18a69eabc233d9cfc5fb2fb65c07cfe6>@@QBEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"protected: void __thiscall cocos2d::Console::loop(void)" ([email protected]@[email protected]@IAEXXZ)'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
4>cocos2d.lib(CCConsole.obj) : error LNK2019: unresolved external symbol '[email protected]' referenced in function '"public: bool __thiscall cocos2d::Console::listenOnTCP(int)" ([email protected]@[email protected]@[email protected])'
Оригинальное решение не имеют никаких ошибок, я знаю. Но файлы визуальных студийных решений должны быть сгенерированы cmake, какая проблема с CMakeLists.txt
?
*: На самом деле, включают в себя настройки каталогов не правильно, поэтому я пропатчить их:
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/Classes
${COCOS2D_ROOT}
${COCOS2D_ROOT}/cocos
${COCOS2D_ROOT}/cocos/audio/include
${COCOS2D_ROOT}/cocos/2d
${COCOS2D_ROOT}/cocos/2d/renderer
${COCOS2D_ROOT}/cocos/2d/platform
${COCOS2D_ROOT}/cocos/2d/platform/desktop
${COCOS2D_ROOT}/cocos/2d/platform/win32
${COCOS2D_ROOT}/cocos/base
с ними:
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/Classes
${COCOS2D_ROOT}
${COCOS2D_ROOT}/cocos
${COCOS2D_ROOT}/cocos/audio/include
${COCOS2D_ROOT}/cocos/2d
${COCOS2D_ROOT}/cocos/renderer
${COCOS2D_ROOT}/cocos/platform
${COCOS2D_ROOT}/cocos/platform/desktop
${COCOS2D_ROOT}/cocos/platform/win32
${COCOS2D_ROOT}/cocos/base
Да, renderer
, platform
... не в cocos/2d
пути. Это единственное изменение, которое я должен сделать для источников.
Возможный дубликат [Отказ от ссылки на соответствующие библиотеки/объектные файлы или компиляцию файлов реализации] (http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol- error-and-how-do-i-fix/12574400 # 12574400) «В программировании Windows контрольный знак, что вы не связали нужную библиотеку, состоит в том, что имя неразрешенного символа начинается с __imp_." –
@RaymondChen: Это не дубликат, это проблема с cocos2d. В принципе, sdk должен генерировать правильное решение для вас, но не может этого сделать. – SigTerm
Решение такое же: добавьте недостающие библиотеки. –