前一段时间,使用cocos2dx 2.0,在使用中文转码的时候,老是加载出问题。
Error 1 error LNK2019: unresolved external symbol _libiconv_close referenced in function "public: int __thiscall HelloWorld::GBKToUTF8(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,char const *,char const *)" (?GBKToUTF8@HelloWorld@@QAEHAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBD1@Z) F:\cocos2d\cocos2d2\HelloWorld\proj.win32\HelloWorldScene.obj HelloWorld
Error 2 error LNK2019: unresolved external symbol _libiconv referenced in function "public: int __thiscall HelloWorld::GBKToUTF8(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,char const *,char const *)" (?GBKToUTF8@HelloWorld@@QAEHAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBD1@Z) F:\cocos2d\cocos2d2\HelloWorld\proj.win32\HelloWorldScene.obj HelloWorld
Error 3 error LNK2019: unresolved external symbol _libiconv_open referenced in function "public: int __thiscall HelloWorld::GBKToUTF8(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,char const *,char const *)" (?GBKToUTF8@HelloWorld@@QAEHAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PBD1@Z) F:\cocos2d\cocos2d2\HelloWorld\proj.win32\HelloWorldScene.obj HelloWorld
,原因是在引用第三方库的时候,只写了头文件,#include "platform\third_party\win32\iconv\iconv.h"
只要在头文件附近加入
#pragma comment(lib,"libiconv.lib")
即:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "platform\third_party\win32\iconv\iconv.h"
#pragma comment(lib,"libiconv.lib")
#endif
可解决中文问题,下面附带函数:
int HelloWorld::GBKToUTF8(std::string &gbkStr,const char* toCode,const char* formCode)
{
iconv_t iconvH; iconvH = iconv_open(formCode,toCode);
if(iconvH == 0)
{
return -1;
}
const char* strChar = gbkStr.c_str();
const char** pin = &strChar;
size_t strLength = gbkStr.length();
char* outbuf = (char*)malloc(strLength*4);
char* pBuff = outbuf;
memset(outbuf,0,strLength*4);
size_t outLength = strLength*4;
if(-1 == iconv(iconvH,pin,&strLength,&outbuf,&outLength))
{
iconv_close(iconvH);
return -1;
}
gbkStr = pBuff;
iconv_close(iconvH);
return 0;
}
//-----------------------------------------------------
std::string title = "啊看见电算会计快接啊但是";
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
GBKToUTF8(title,"gb2312","utf-8");
#endif
CCLabelTTF* pLabel = CCLabelTTF::create(title.c_str(), "Thonburi", 24);
分享到:
相关推荐
本文将详细介绍如何在Cocos2dx项目中集成并使用第三方.so库,包括必要的步骤和注意事项。 #### 二、准备工作 在正式介绍集成步骤之前,我们需要确保具备以下条件: 1. 已经创建好了一个Cocos2dx的项目。 2. 准备好...
10. **扩展性和社区支持**:拥有庞大的开发者社区,提供丰富的第三方库和教程,方便开发者扩展功能和解决问题。 本书《精通COCOS2D-X游戏开发进阶卷》会详细讲解这些核心特性的使用方法,并通过实际案例帮助读者...
7. **扩展功能**:除了基本的`Android.mk`生成,工具可能还包括其他功能,如添加预编译宏定义、处理资源文件、支持第三方库的集成等。 8. **维护和更新**:由于Cocos2d-x框架持续更新,作者可能需要定期更新工具以...
对于第三方库和额外库,需要手动添加,因为默认的Android.mk可能并未包含所有必要的依赖。 7. **Eclipse导入**:在Eclipse中创建一个新的Android项目,通过"Create project from existing source"导入已生成的...
2. **XML数据解析**:cocos2d-x没有内置的XML解析库,但可以借助第三方库如pugixml、TinyXML等进行解析。以pugixml为例,你需要将接收到的XML字符串转换为`std::string`,然后加载到pugixml的`xml_document`对象中:...
注意,可能需要手动添加任何第三方库和额外库的路径。 **第五步:编译.so库** 在Cygwin环境下,进入Android工程的根目录,运行`build_native.sh`脚本。这将编译源代码并生成.so库文件。首次编译可能需要较长时间。 ...
需要注意的是,由于cocosCreator的日历插件是第三方开发的,可能存在兼容性问题或者更新不及时的情况。因此,开发者在使用前应确保插件版本与cocosCreator引擎版本匹配,并关注插件的更新动态,以保持最佳的运行效果...
1. **压缩文件**:Cocos2dx虽然不直接支持文件的压缩,但你可以利用Zlib库或者其他第三方库(如minizip)来完成。Zlib提供了一系列的函数,如`deflateInit2_`, `deflate`, `deflateEnd`等,用于对数据进行压缩。在...
6. third_party:第三方库,如Lua、Spine、Physics等。 三、学习与利用 通过研究这些源代码,开发者可以: 1. 自定义扩展:了解底层实现后,可以针对性地修改或扩展引擎功能,满足特定需求。 2. 性能优化:分析...
- 考虑到跨平台兼容性,`CCNativeAlert`的实现可能会依赖于第三方库或者特定平台的API,因此在项目中引入`CCNativeAlert`时,需要确保这些依赖项已经正确安装和配置。 - 由于`CCNativeAlert`是异步的,因此在回调...
其次,源码中的物理引擎部分,可能是基于Box2D或Chipmunk等第三方库,用于处理游戏中的碰撞检测和物理行为。这包括角色的跳跃、滑行、障碍物的交互等。通过阅读这部分代码,可以学习如何模拟真实世界的物理现象,如...
9. `packages`:可能包含了第三方库或者自定义组件,用于扩展游戏功能。 10. `creator.d.ts`:Cocos Creator的类型定义文件,提供对JavaScript的类型检查支持。 在“跳一跳”游戏中,关键知识点包括: 1. **物理...
将这个模块作为第三方库引入到Creator项目中,并确保在构建过程中被正确链接。 4. **读取ASTC纹理**:使用Cocos2d-x的文件系统API读取ASTC纹理文件的数据,然后传递给你的解码器。 5. **转换为Cocos2d-x纹理**:...
ShareSDK是一个流行的第三方社交分享平台,支持多种社交网络,如微信、微博等。下面将详细介绍在Cocos2d-x 3.0中集成ShareSDK的步骤,以及如何解决可能遇到的问题。 首先,确保你有一个基于Cocos2d-x 3.0rc2的...
在这种情况下,开发者可能需要使用第三方库如Egret或Cocos2d-x,它们提供了一层抽象,使在小程序中实现3D图形变得更加便捷。 总的来说,这个压缩包的内容涵盖了从基本的3D几何形状创建到高级的多纹理贴图技术,对于...
在Windows、Mac OS和Android等操作系统中,系统会支持特定的动态壁纸格式,并通过内置或第三方应用来播放这些效果。例如,Windows 10中的动态壁纸可能利用Windows Shell扩展来实现,而Android则依赖于Live ...
在集成第三方库时,可能需要手动配置一些选项,以确保ARC和第三方代码之间的兼容性。例如,对于静态库,可能需要在项目设置中指定ARC编译器标志。 10. ARC与游戏开发框架的集成: ARC可以与游戏开发框架如Cocos2D或...
- 有时为了兼容第三方库或其他特殊需求,可能需要在某些文件中禁用ARC功能。 3. **ARC自动迁移的常见问题** - 迁移过程中可能出现的问题及其解决办法。 4. **属性(property)** - ARC如何影响`@property`声明和...