How to include Box2d with v3.17?

How to include Box2d with v3.17?
0
#13

I create an empty project with 3.17, and add box2D include path in setting like this:
image


but I still can not find the correct header file path in xcode:

0 Likes

#14

v3.16 box2d
…\external\Box2D\Dynamics\b2Island.cpp

    ......
// Solve position constraints
timer.Reset();
bool positionSolved = false;
for (int32 i = 0; i < step.positionIterations; ++i)
{
	bool contactsOkay = contactSolver.SolvePositionConstraints();

	bool jointsOkay = true;
	for (int32 j = 0; j < m_jointCount; ++j)
	{
		bool jointOkay = m_joints[i]->SolvePositionConstraints(solverData);  // here! line 317
		jointsOkay = jointsOkay && jointOkay;
	}
        ................

line 317 => bool jointOkay = m_joints[ j ]->SolvePositionConstraints(solverData);
change i to j, it will be fine,I think.

0 Likes

#15

Hi,
Did someone solve this issue?
I’ve the same problem. include <Box2d/Box2d.h> not work in 3.17.
I included box2d .a file in Build Phrases but i continue with the problem…

0 Likes

#16

You having same issue for both iOS and Android?

0 Likes

#17

For the moment I’m trying to compile 3.17 only in iOS. But when I can compile it on iOS, I’ll try on Android

0 Likes

#18

It would be really great if some cocos2d-x developer explained how to do this.

0 Likes

#19

Adding the search path mentioned above worked for us

1 Like

#20

Thanks @vkreal2
I included $(PROJECT_DIR)/../cocos2d/external/Box2D/include in Build Settings > Header Search Paths and now it works.

1 Like

#21

Thank you! It works!

0 Likes

#22

I’m now experiencing this issue as well with version 3.17 and it seems that the Box2d headers were removed from the /external/ folder. The only Box2d file I can find in the cocos project is /Frameworks/libbox2d.a. So the previous suggestion to add a search path to a header which no longer exists cannot work.

0 Likes

chipmunk-Box2D Gideros framework-cocos2d-x recreations
#23

Just download Cocos2dx v3.17 from the download section of this website. there is a “/external/Box2D” folder. 100%!

I added two lines in Android.mk

LOCAL_C_INCLUDES += $(LOCAL_PATH)/…/…/…/cocos2d/external/Box2D/include

LOCAL_WHOLE_STATIC_LIBRARIES := box2d_static

it’s the same for xcode projects. add box2d paths to “Header Search Paths” + If you cant find the Box2d folder in your project navigator… you had also to add the folder to your project)

Enable Box2D in your Project:
xcode: CC_ENABLE_BOX2D_INTEGRATION=1 (search for “Preprocessor Macros” under Build Settings)
android: APP_CPPFLAGS += -DCC_ENABLE_BOX2D_INTEGRATION=1 (Application.mk)

In your Code use it like : #include "Box2D/Box2D.h"

it works!

0 Likes

#24

Has anyone included Box2D for a Mac project?
On iOS it works for me:

But when i try to compile in Mac, i’ve the same problem:

#include <Box2D/Box2D.h>

'Box2D/Box2D.h' file not found

cc @slackmoehrle

0 Likes

#25

It should work for Mac also.
Please check what that include is added for Mac project settings.

0 Likes

#26

Mac project settings?
Where?

0 Likes

#27

Select target Mac and then check project settings
https://static1.squarespace.com/static/50c25455e4b0ef5720704c6b/t/541b040be4b07b5243aff3cc/1411056655739/

0 Likes

#28

Hmm…
In Build Settings > Header Search Paths i added
$(PROJECT_DIR)/../cocos2d/external/Box2D/include

I added it in the scheme MyGame-desktop instead of the scheme MyGame-mobile.
Is that what you’re trying to say?
If yes, it doesn’t work.

I’m using CocoaPods in the project. In Podfile i configured only MyGame-mobile.
But box2d is another thing… (no pods).

Sure. It’s a setting problem in my project… i’m sure.

0 Likes

#29

@dimon4eg you could reproduce my error creating a new cocos project.
In HelloWorld.cpp add this line:

#include <Box2D/Box2D.h>

After that, compile it (in mobile). You will see the error.
Then edit Build Settings > Header Search Paths and add
$(PROJECT_DIR)/../cocos2d/external/Box2D/include

Compile again. It will work.
Now change scheme to MyGame-desktop and compile in your Mac,

You will see the error again.
And… then… how to fix it on desktop…?

EDIT: adding the header search path in MyGame-desktop, clean & re-build, now works in cpp-example but not in my original project… :triumph:

0 Likes

#30

Do you have a Desktop target? Did you add the Box2D path there too?

0 Likes

#31

yep. :confused:

0 Likes

#32

Maybe something with another lib, framework, etc…

Undefined symbols for architecture x86_64:
 .
 .
 .
 .
 .
      ...
  "_objc_msgSendSuper2", referenced from:
      -[GLFWWindowDelegate initWithGlfwWindow:] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWContentView initWithGlfwWindow:] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWContentView dealloc] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWContentView updateTrackingAreas] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWApplication sendEvent:] in libcocos2d Mac.a(cocoa_window.m.o)
      -[NSTimerWrapper initWithTimeInterval:callback:] in libcocos2d Mac.a(AudioCache.o)
      -[NSTimerWrapper dealloc] in libcocos2d Mac.a(AudioCache.o)
      ...
  "_objc_msgSend_stret", referenced from:
      -[GLFWWindowDelegate windowDidResize:] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWWindowDelegate windowDidMove:] in libcocos2d Mac.a(cocoa_window.m.o)
      __glfwPlatformGetWindowPos in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWWindowDelegate windowDidBecomeKey:] in libcocos2d Mac.a(cocoa_window.m.o)
      __glfwPlatformSetCursorMode in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWContentView mouseMoved:] in libcocos2d Mac.a(cocoa_window.m.o)
      -[GLFWContentView viewDidChangeBackingProperties] in libcocos2d Mac.a(cocoa_window.m.o)
      ...
  "_uncompress", referenced from:
      cocos2d::ZipUtils::inflateCCZBuffer(unsigned char const*, long, unsigned char**) in libcocos2d Mac.a(ZipUtils.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
0 Likes