想在cocos2dx的官方lua版本中protobuf。
参考这位大侠的例子。
http://blog.csdn.net/weyson/article/details/17024325
只是在向工程里添加pb.c源码的时候,我是把pb.c这个文件添加到项目的C++源码里了。编译出现下面这样的错误:
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(19): error C2054: 在“using”之后应输入“(”
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(19): error C2061: 语法错误: 标识符“using”
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(21): error C2061: 语法错误: 标识符“using”
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(21): error C2061: 语法错误: 标识符“abs”
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(21): error C2059: 语法错误:“;”
12>d:\program files (x86)\microsoft visual studio 11.0\vc\include\cstdlib(21): error C2061: 语法错误: 标识符“atexit”
我把pb.c里的内容全部注释掉,还是会出现同样的错误。
把项目的编译设置改为编译为C++代码,可又出现下面这样的错误:
pb.obj : error LNK2019: 无法解析的外部符号 “void __cdecl lua_settop(struct lua_State *,int)” (?lua_settop@@YAXPAUlua_State@@H@Z),该符号在函数 “int __cdecl varint_encoder(struct lua_State *)” (?varint_encoder@@YAHPAUlua_State@@@Z) 中被引用
===============================================================
最后把pb.c放到liblua里,编译通过了。不知道是个啥原因?仅仅因为两个工程,一个是生成exe,一个是生成lib ?
1>pb.obj : error LNK2019: 无法解析的外部符号 “void __cdecl lua_pushvalue(struct lua_State *,int)” (?lua_pushvalue@@YAXPAUlua_State@@H@Z),该符号在函数 “int __cdecl luaopen_pb(struct lua_State *)” (?luaopen_pb@@YAHPAUlua_State@@@Z) 中被引用
1>pb.obj : error LNK2019: 无法解析的外部符号 “void __cdecl lua_pushnumber(struct lua_State *,double)” (?lua_pushnumber@@YAXPAUlua_State@@N@Z),该符号在函数 “int __cdecl varint_decoder(struct lua_State *)” (?varint_decoder@@YAHPAUlua_State@@@Z) 中被引用
1>pb.obj : error LNK2019: 无法解析的外部符号 “void __cdecl lua_pushinteger(struct lua_State *,int)” (?lua_pushinteger@@YAXPAUlua_State@@H@Z),该符号在函数 “int __cdecl varint_decoder(struct lua_State *)” (?varint_decoder@@YAHPAUlua_State@@@Z) 中被引用
这应该是C和C++的编译不一致导致的。
可不知道该如何修改。哪个大侠知道的,麻烦指教下。谢谢。