lua调用lua ffi c函数的疑惑

174 views
Skip to first unread message

FIghtingMan

unread,
Jul 4, 2017, 4:07:12 AM7/4/17
to openresty
问题大概是这样的,我从一个文件里读取字符串
将这个字符串传入到lua ffi c函数里面什么都不做直接返回
然后这个字符串出现了部分丢失
我调试过程中发现其实c函数里收到的字符串就已经丢失了
建了个repo:
源码如下:
test.lua
local ffi = require("ffi")
local test = ffi.load("/home/vagrant/libtest.so")
ffi.cdef[[
const char * direct_return(const char * str);
]]

local f = io.open("newecrypt0523.txt", "rb")
local foo = f:read("*all")

local bar = test.direct_return(foo)
print(foo)
print("======================")
print(ffi.string(bar))

test.c
const char * direct_return(const char * str) {
return str;
}
newecrypt0523.txt

FIghtingMan

unread,
Jul 4, 2017, 4:10:32 AM7/4/17
to openresty
gcc -fPIC -shared test.c -o libtest.so

在 2017年7月4日星期二 UTC+8下午4:07:12,FIghtingMan写道:
Message has been deleted

FIghtingMan

unread,
Jul 4, 2017, 4:15:27 AM7/4/17
to openresty
输出内容:
rY��֢�yg��ŧ�R"먌����u��c�^"R!ό���    
                                 6_}�Q ;��@�T^QX3\(�n�'zD�s���
                                                               �Ϗ�չ���$!���O��ﶱ�G�*~�_DO��p��ۗn�y�,J�̓u&p��TxV�^C&H���+���0�ʚIq��HV��v�5K˚8E��A�(8�B�Bz�6LxB�;)c�{B�I��a'��x�q�zp ��z:3.0-platform=Android&sdkversion=2.5.0&product=locP��Ұڹ �~�D7�iݴ��a�u'��k��I�{�c���*c�G�d�t�()��v���&���/ϱ���0���:��v���?�
                                                                                                                        )��/�3�K�F�P�QVT�&����� 6B�:��8�I�����]u�¥��G�c�Ǖ#O�F��q�@rBKw �cpz>�4w8^�Sz�k�a�Rt��|��} O�ư7�KI�?��ek�-��/�|z��=�n��s]��7#��?��G�t,���
                                                                                 �&�ҁd� �������Ž�`��{N��v<�z�y��r���
                                                                                                                    #;��N��2� �Oy?��18Qٳ>T��#}R�%M
======================
PANDORA$



在 2017年7月4日星期二 UTC+8下午4:07:12,FIghtingMan写道:
问题大概是这样的,我从一个文件里读取字符串

FIghtingMan

unread,
Jul 4, 2017, 10:19:24 AM7/4/17
to openresty
fixed.  ffi.string(ptr [,len])


在 2017年7月4日星期二 UTC+8下午4:07:12,FIghtingMan写道:
问题大概是这样的,我从一个文件里读取字符串
Reply all
Reply to author
Forward
0 new messages