各种api 的坑
来源:互联网 发布:富士通热敏打印软件 编辑:程序博客网 时间:2024/06/09 15:26
最近在做新的项目,设计打文件传输问题,lua和c++交互。踩了不少坑,也收获很多。
1.luaL_tointeger 和lua_tonumber
在把大文件的大小传给c++时,用lua_tointeger取出,导致计算出错。后来经过仔细看了lua api文档,才发现,这个接口转出的结果是整形,长度明显不够。最终只能用lua_tonumber解决问题。
lua_tointeger
lua_Integer lua_tointeger (lua_State *L, int idx);
把给定索引处的 Lua 值转换为 lua_Integer 这样一个有符号整数类型。 这个 Lua 值必须是一个数字或是一个可以转换为数字的字符串 否则,lua_tointeger 返回 0 。
如果数字不是一个整数, 截断小数部分的方式没有被明确定义。
lua_tonumber
lua_Number lua_tonumber (lua_State *L, int index);
把给定索引处的 Lua 值转换为 lua_Number 这样一个 C 类型
lua_Number
typedef double lua_Number;
Lua 中数字的类型。 确省是 double ,但是你可以在 luaconf.h 中修改它。
通过修改配置文件你可以改变 Lua 让它操作其它数字类型
2.fseek和 _fseeki64
在上传文件时是分块上传,读取文件时就用到了fseek移动文件指针的偏移,诡异的出错了,每次读取超过2G的文件,fseek都失败。long的最大值是2147483647
int fseek( FILE *stream, long offset, int origin );
int _fseeki64( FILE *stream, __int64 offset, int origin );
3.GetFileSize 和GetFileSizeEx
第三个坑还是跟文件大小有关,不熟悉win api,凭经验,直接用了GetFileSize ,超过2G的文件返回值又错了。
typedefunion _LARGE_INTEGER {
struct { DWORD LowPart; LONG HighPart; };
struct { DWORD LowPart; LONG HighPart; } u;
LONGLONG QuadPart;} LARGE_INTEGER, *PLARGE_INTEGER;
BOOL WINAPI GetFileSizeEx( _In_ HANDLE hFile, _Out_ PLARGE_INTEGER lpFileSize);
DWORD WINAPI GetFileSize( _In_ HANDLE hFile, _Out_opt_ LPDWORD lpFileSizeHigh);
阅读全文
0 0
- 各种api 的坑
- piwik 各种日志的api
- osmf grindPlayer的各种api。
- 开发人员的各种工具书 api
- osmf grindPlayer的各种api。
- 各种API
- linux下各种API的用法
- QQ音乐的各种相关API
- 联系人API 的各种表结构
- QQ音乐的各种相关API
- JAVA中API的各种应用
- 【整理】各种语言的API文档
- 报表开发导出各种格式文件的API
- 免费的各种SDK,API接口
- API]Google的语音识别API,支持各种语言
- 好的博客 及 收藏的各种 API 分享
- 各种api网址收集
- 各种API 搜集
- Struts2_表单验证(基于XML)
- python 监控键盘长按输入的思路
- 2017金马五校赛 M.风力观测(线段树)
- java数据类型及其类型转换
- linux基本介绍——嵌入式学习
- 各种api 的坑
- 欢迎使用CSDN-markdown编辑器
- Android通用框架设计与完整电商APP开发系列文章
- C++多线程分析
- Crazy Learning for Day 12
- 每日工作日报
- [复习][HDU1251]字典树(trie树)统计难题
- 2017.07.12
- Can you solve the equation?(二分求方程解)