Does Cocos2d-x need Visual Studio? Or it only needs Microsoft C++ compiler?

Hi. I see on docs that Cocos2d-x needs Visual Studio. I thought that cocos2d-x needs only Microsoft C++ compiler, not Visual Studio. So, I’ve downloaded Build Tools for Visual Studio 2019 and installed Microsoft C++ compiler like this:

vs_installershell_506

Installed:

  • MSVC C++ 2019 x64/x86
  • Windows 10 SDK
  • C++ CMake tools for Windows

But I get this error message when run cocos run -p win32 command:
Building mode: debug
Can not find VS version or not specified
running: ‘cmake …’

-- Building for: Visual Studio 16 2019
-- The C compiler identification is MSVC 19.24.28316.0
-- The CXX compiler identification is MSVC 19.24.28316.0
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe - works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe
-- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.24.28314/bin/Hostx64/x64/cl.exe - works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- PROJECT_NAME:test1
-- PROJECT_SOURCE_DIR:C:/Users/UserName/Desktop/mygame/test1
-- COCOS2DX_ROOT_PATH:C:/Users/UserName/Desktop/mygame/test1/cocos2d
-- CMAKE_MODULE_PATH:C:/Users/UserName/Desktop/mygame/test1/cocos2d/cmake/Modules/
-- PROJECT_BINARY_DIR:C:/Users/UserName/Desktop/mygame/test1/win32-build
-- ENGINE_BINARY_PATH:C:/Users/UserName/Desktop/mygame/test1/win32-build/engine
-- PYTHON_PATH:C:/Python27/python.exe
-- COCOS_COMMAND_PATH:C:/Development/cocos2d-x/tools/cocos2d-console/bin/cocos
-- HOST_SYSTEM:Windows
-- CMAKE_GENERATOR: Visual Studio 16 2019
-- using Windows MSVC generate cocos2d-x project, MSVC_VERSION:1924
-- COCOS2DX_LUAJIT_ROOT:C:/Development/cocos2d-x/tools/cocos2d-console/bin/../plugins/plugin_luacompile/bin
-- LUAJIT32_COMMAND:C:/Development/cocos2d-x/tools/cocos2d-console/plugins/plugin_luacompile/bin/32bit/luajit-win32.exe
-- LUAJIT64_COMMAND:C:/Development/cocos2d-x/tools/cocos2d-console/plugins/plugin_luacompile/bin/64bit/luajit-win32.exe
-- cocos_mark_code_files: cocos2d
-- cocos_mark_code_files: test1
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/UserName/Desktop/mygame/test1/win32-build
running: 'cmake --build . --config Debug'

.NET Framework için Microsoft (R) Build Engine sürüm 16.4.0+e901037fe
Telif Hakkı (C) Microsoft Corporation. Tüm hakları saklıdır.

  Checking Build System
  Copying resources for test1 ...
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/CMakeLists.txt
      copying to C:/Users/UserName/Desktop/mygame/test1/win32-build/bin/test1/Debug/Resources
    Create C:/Users/UserName/Desktop/mygame/test1/win32-build/bin/test1/Debug/Resources\fonts\Marker Felt.ttf
    Create C:/Users/UserName/Desktop/mygame/test1/win32-build/bin/test1/Debug/Resources\HelloWorld.png
    Create C:/Users/UserName/Desktop/mygame/test1/win32-build/bin/test1/Debug/Resources\res\.gitkeep
    ...
    0 items updated, 6 items created
    takes 0.0780000686646 seconds
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/clipper/CMakeLists.txt
  clipper.cpp
  ext_clipper.vcxproj -> C:\Users\UserName\Desktop\mygame\test1\win32-build\lib\Debug\ext_clipper.lib
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/ConvertUTF/CMakeLists.txt
  ConvertUTF.c
  ConvertUTFWrapper.cpp
  ext_convertUTF.vcxproj -> C:\Users\UserName\Desktop\mygame\test1\win32-build\lib\Debug\ext_convertUTF.lib
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/edtaa3func/CMakeLists.txt
  edtaa3func.cpp
  ext_edtaa3func.vcxproj -> C:\Users\UserName\Desktop\mygame\test1\win32-build\lib\Debug\ext_edtaa3func.lib
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/md5/CMakeLists.txt
  md5.c
  ext_md5.vcxproj -> C:\Users\UserName\Desktop\mygame\test1\win32-build\lib\Debug\ext_md5.lib
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/poly2tri/CMakeLists.txt
  shapes.cc
  sweep.cc
  sweep_context.cc
  cdt.cc
  advancing_front.cc
  Kod Üretiliyor...
  ext_poly2tri.vcxproj -> C:\Users\UserName\Desktop\mygame\test1\win32-build\lib\Debug\ext_poly2tri.lib
  Building Custom Rule C:/Users/UserName/Desktop/mygame/test1/cocos2d/external/recast/CMakeLists.txt
  DebugDraw.cpp
  DetourDebugDraw.cpp
  DetourAlloc.cpp
  DetourCommon.cpp
  DetourNavMesh.cpp
  DetourNavMeshBuilder.cpp
  DetourNavMeshQuery.cpp
  DetourNode.cpp
  DetourCrowd.cpp
  DetourLocalBoundary.cpp
  DetourObstacleAvoidance.cpp
C:\Users\UserName\Desktop\mygame\test1\cocos2d\external\recast\DetourCrowd\DetourObstacleAvoidance.cpp(334,18): warning
C4244: 'başlatılıyor': 'double' - 'float' dönüşümü; veri kaybı olabilir [C:\Users\UserName\Desktop\mygame\test1\win32-bu
ild\engine\external\recast\ext_recast.vcxproj]
...
...
Error running command, return code: 1.

What is the problem? Can I not use cocos2d-x without Visual Studio?

Why don’t you show the build error? The bit in the ... that you didn’t paste.

@R101 mentions some additional helpful info.

However, I know you can compile with minGW.

Sorry, this website can’t paste 3000+ lines code. I added full error code: https://paste.ubuntu.com/p/TNZvCbjkSB/

How can I compile win32 cocos2d-x project with mingw? Thanks.

I haven’t done it in a few years but back around 3.13 I was tasked with trying various compilers on various platforms. I may still have the work. If I do I’ll post my notes.

If you look at the log output, you’ll notice that the errors aren’t 3000 lines, but just this section:

C:\Users\UserName\Desktop\mygame\test1\cocos2d\cocos\ui\UIEditBox\UIEditBoxImpl-win32.cpp(64,70): error C2065: 'GWL_WNDP
ROC': bildirimi yapılmamış tanımlayıcı [C:\Users\UserName\Desktop\mygame\test1\win32-build\engine\cocos\core\cocos2d.vcx
proj]
C:\Users\UserName\Desktop\mygame\test1\cocos2d\cocos\ui\UIEditBox\UIEditBoxImpl-win32.cpp(101,42): error C2065: 'GWL_WND
PROC': bildirimi yapılmamış tanımlayıcı [C:\Users\UserName\Desktop\mygame\test1\win32-build\engine\cocos\core\cocos2d.vc
xproj]
C:\Users\UserName\Desktop\mygame\test1\cocos2d\cocos\ui\UIEditBox\UIEditBoxImpl-win32.cpp(128,42): error C2065: 'GWL_USE
RDATA': bildirimi yapılmamış tanımlayıcı [C:\Users\UserName\Desktop\mygame\test1\win32-build\engine\cocos\core\cocos2d.v
cxproj]
C:\Users\UserName\Desktop\mygame\test1\cocos2d\cocos\ui\UIEditBox\UIEditBoxImpl-win32.cpp(129,66): error C2065: 'GWL_WND
PROC': bildirimi yapılmamış tanımlayıcı [C:\Users\UserName\Desktop\mygame\test1\win32-build\engine\cocos\core\cocos2d.vc
xproj]

That error translates to:
error C2065: *** undeclared identifier

1 Like

Finally I prefer to install Visual Studio 2019. I ran that:

cd mytest
mkdir win32-build
cd win32-build
cmake .. -G"Visual Studio 16 2019" -A Win32

Then I opened win32-build/mytest.vcxproj and compiled the project. I didn’t get any problem to compile but I get this error (The error message says ‘System cannot find the specified file’):

But I can find the game file in mytest\win32-build\bin\mytest\Debug:
game_exe-in-folder

I had not guessed that I would face such problems :slight_smile:

You really should use the search functionality on this forum, because questions like this have been asked before:

Setting the correct start-up project

1 Like