GithubHelp home page GithubHelp logo

如何使用 about luapb HOT 35 OPEN

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024
如何使用

from luapb.

Comments (35)

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

把它编译成.so 后者.dll
然后把它加到lua path 路径就行了

from luapb.

bingtian avatar bingtian commented on September 4, 2024

请问在ios或android上怎么设置路径?
pb.import(path)

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你用什么开发?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

我用cocos2dx 3.x开发的

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

报错的日志是怎样的?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

[ProtoImporter] protopath:(null)
/Users/bingtian/Documents/testpbMac.app/Contents/Resources/res/pb/login.proto:-1:0:File not found.
import (/Users/bingtian/Documents/testpbMac.app/Contents/Resources/res/pb/login.proto) file descriptor error

就是import失败,protobuf的importer找不到这个文件,我是在mac开发的

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

login.proto 文件放在那里?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

/Users/bingtian/Documents/testpbMac.app/Contents/Resources/res/pb/login.proto 你看看是不是存在这个文件

from luapb.

bingtian avatar bingtian commented on September 4, 2024

就是放在这的/Users/bingtian/Documents/testpbMac.app/Contents/Resources/res/pb/login.proto
是存在的,所以是挺奇怪的

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你用相对路径试试?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

能读成stream然后,传给protobuf吗?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你可以试试
我这边没有开发环境,不能重现你说的情况,不好实验。

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你有用 addSearchPath 吗?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你可以打包一下你的工程 我这边试试

from luapb.

bingtian avatar bingtian commented on September 4, 2024

说的这个addSearchPath是cocos2dx的吗?但是这个貌似跟luapb没关联的
我有add的,我项目中的资源都是这么去用的

from luapb.

bingtian avatar bingtian commented on September 4, 2024

我刚刚看了protubuf源码,没有提供用stream读取的proto文件的方式,它使用DescriptorPool来统一管理的,要改的话,只能动源码了,而且也不太好入手

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

我大概想了一下
可以这样做

  1. 把proto文件夹 addSearchPath
  2. 导入login.proto 的时候,直接pb.import("login.proto")
    这样应该可以了 就不用改代码了

from luapb.

bingtian avatar bingtian commented on September 4, 2024

我现在是这么写也是不行的
local path = cc.FileUtils:getInstance():fullPathForFilename("pb/login.proto")
pb.import(path)

其中pb的父目录是addSearchPath的

也试过这样也不行
pb.import("pb/login.proto")

但是,cocos2dx的addSearchPath跟protobuf的import没关联的呀,我觉得还是得用绝对路径才行,但是按我第一种用法也不行,我就蛋疼了

from luapb.

bingtian avatar bingtian commented on September 4, 2024

你用的protobuf版本是多少的,我用的是2.50的,跟这没关系吧?或者你用的protobuf打包一份给我试试?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

cc.FileUtils:getInstance():addSearchPath("proto路径", true)
pb.import("login.proto")

from luapb.

bingtian avatar bingtian commented on September 4, 2024

cc.FileUtils:getInstance():addSearchPath("res/pb", true)
pb.import("login.proto")
依然报错:
[ProtoImporter] protopath:(null)
login.proto:-1:0:File not found.
import (login.proto) file descriptor error

你也是做手游的?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

是的
我晚上搭个环境试试你的情况
说一下你的开发环境

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

现在没有环境 不好实验

from luapb.

bingtian avatar bingtian commented on September 4, 2024

我是在mac下开发的,用xcode6.1,cocos2dx 3.4版本
真是麻烦你了
你那边不会出现这种情况吗?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

我断点去跟踪,终于发现为啥了,原来它不支持直接传前缀带/的路径名,我就设置了mapPath,然后就可以了。自己加了两个方法方法
void ProtoImporter::setMapPath(const std::string& filename){
sourceTree.MapPath("", filename);
}
static int pb_setMapPath(lua_State* L)
{
const char* filename = luaL_checkstring(L, 1);
sProtoImporter.setMapPath(filename);
return 0;
}

用法:
local path = cc.FileUtils:getInstance():fullPathForFilename("pb/login.proto")
local mapPath = string.sub(path,0,string.len(path)-11)
pb.setMapPath(mapPath)
pb.import("login.proto")

暂时试了ios和mac都没问题,android后面再试试看

from luapb.

bingtian avatar bingtian commented on September 4, 2024

请问,怎么判断某个字段没有值?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

是指?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

pb_get那我修改了下,加了判断
reflection->HasField(*message, field)

from luapb.

bingtian avatar bingtian commented on September 4, 2024

message MRoleObj
{
optional int64 rid = 1;
optional string name = 2;
optional int32 job = 3;
optional int32 sex = 4;
optional int32 level = 5;
optional int64 exp = 6;
}
现在发现一个问题,如果一个字段服务器设置0的话,那它后面的字段都客户端就获取不了值了,但如果不设置值,又一切正常,请问你遇到这种问题吗?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

现在发现一个问题,如果一个字段服务器设置0的话,那它后面的字段都客户端就获取不了值了,但如果不设置值,又一切正常,请问你遇到这种问题吗?
不太明白 这里的意思?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

就比如服务器设置
rid=1,name="test",job=1,sex=0,level=2,exp=5
我客户端就只解析到rid=1,name=“test”,job=1,sex,level,exp都没有值了
但如何不设置sex的话,那rid,name,job,level,exp,都能正常解析出来

说白了,就是服务器不能传0,一传0,后面的值,就解析不出来了

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

没出现过
你是怎么解析服务端发过来的数据的
是不是被截断了?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

还真是被截断了,我是从c++这边收到数据再传给lua的,然后再进行解析的,那该如何防止被截断?

from luapb.

zhanjunxiong avatar zhanjunxiong commented on September 4, 2024

你用的接口是?

from luapb.

bingtian avatar bingtian commented on September 4, 2024

问题解决了,是c++这边的问题,跟lua没关系

from luapb.

Related Issues (15)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.