Gotchas: Using Cocos2d-x libExtensions and libNetwork

This tutorial is compatible with Cocos2d-x 3.0.

Some features of Cocos2d-x such as EditBox and HttpClient are not in the main libCocos2d project and in order to access them, other projects should be imported to the solution first. In this post, I am going to explain how to import and link external projects to the main game project. This post can also help people with general problems regarding referencing C++ projects in Visual Studio.

First, we need to import the libExtensions and libNetwork projects to our solution. To do this, right click on your Solution in the Solution Explorer window, hover over the Add item and press Existing Project….

The libExtensions.vcxproj project file is located at cocos2d\extensions\proj.win32 and the libNetwork.vcxproj is located at cocos2d\cocos\network\proj.win32. After importing them, you need to link them to your main project.

To add references to other projects, you need to go to the property pages of your main project. Right click on your project and press Properties.

From Common Propertiesclick on the Add New Reference…button and check the boxes next to libExtensions and libNetwork.

One last thing that you need to do before using libExtensions, is to add $(EngineRoot) to your projects include directories. In Property Pages, open Configuration Properties>C/C++>General, and add $(EngineRoot); to Additional Include Directories.

There is one additional dependency that you probably might need to add to the libNetwork project. It requires the libcurl_imp.lib file to build, and we can set this by opening the Property Pages of libNetwork, locating Additional Dependencies at Configuration Properties>Librarian>General and adding $(EngineRoot)external\curl\prebuilt\win32\libcurl_imp.lib; to the beginning of it.

Untitled4

Now you are all set to use libExtensions and libNetwork. For example, to create an EditBox, after adding the #include “extensions/GUI/CCEditBox/CCEditBox.h” line to the top of your file, you can use this code:

nameBox = cocos2d::extension::EditBox::create(Size(width, height), Scale9Sprite::createWithSpriteFrameName(“editBox”));

nameBox->setPosition(CP(0.5f, 0.45f));

nameBox->setFont(“Arial”, 42.0f);

nameBox->setLabelAnchorPoint(Point(-0.1f, 0.5f));

nameBox->setFontColor(Color3B::WHITE);

addChild(nameBox);

Note that the classes in libExtensions are located in the cocos2d::extension namespace, and for libNetwork you’d want to look into the cocos2d::network namespace. As an example for libNetwork, in the next section I will show how to send a simple POST request using the HttpRequest and HttpClient classes.

Sending a POST request with Cocos2d-x

To use HttpRequest and HttpClient, you first need to include their header files:s

#include “network/HttpClient.h”

#include “network/HttpRequest.h”

using namespace cocos2d::network;

Now, let’s assume that we want to send some std::string containing our POST data called data to http://127.0.0.1:1337. We can use the following code snippet to do that:

HttpRequest* request = new HttpRequest();

request->setUrl(“http://127.0.0.1:1337 “);

request->setRequestType(HttpRequest::Type::POST);

request->setRequestData(data.c_str(), data.size());

HttpClient::getInstance()->send(request);

request->release();

It’s that easy. Sending GET, PUT and DELETE requests is also very similar, you just need to pass a different HttpRequest::Type to the setRequestType(…) method.

About these ads

Posted on July 6, 2014, in Game Development / Cocos2D-x. Bookmark the permalink. 4 Comments.

  1. Great blog and post! Following the RSS from now on

  2. Hi, thanks for this post. I´m getting this error when trying to build all cocos2d projects in Visual Studio 2012:

    LINK : fatal error LNK1104: cannot open file ‘E:\adt-android\cocos2d-x-cocos2d-x-3.1.1\build\Debug.win32\libNetwork.lib’

    • This probably means that either that library is not being copied to your output folder for linking, or libNetwork is not building. Can you check if you have libNetwork.lib in any of your build folders? If so, try copying it manually to build\Debug.win32 and build again, maybe that will solve the issue…

  3. Thanks! This helped me resolve my linking errors!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 97 other followers

%d bloggers like this: