2011-06-24 7 views
3

私がLuaJITのチュートリアルを見てきました:私はLuaのに多くを取得しようとしていますhttp://luajit.org/ext_ffi_tutorial.htmlLuaJIT&FFI:char *の使い方は?

、私は「libutility.so」のシンプルな「小文字」関数を呼び出すためにそれがいかに簡単かを見てみたかったです私は、だからここC.

に書かれている私が呼び出したいC関数です:

void lowercase(char* str){  
    int z;  
    for (z = 0; str[z]; z++){  
     str[z] = tolower(str[ z ]);  
    }  
} 

は、ここに私のコードはLuaJITのFFI

を使用している...今私はLuaのからこの関数を呼び出したいので、
local ffi = require("ffi") 
ffi.cdef[[ 
void lowercase(char* str); 
]] 
local utility = ffi.load("utility")  
local buf = ffi.new("char[?]", 11) 
ffi.copy(buf, "HELLO WORLD")  
utility.lowercase(buf) 
print("Result: ", #str) 

上記のコードは機能しません...まあ私はそれが上のコードの最後の行まで動作すると思います。

私はこの「小文字」関数をどのように呼び出すことができ、その結果を適切に出力することができますか?

答えて

4

これを試してみてください:

local ffi = require("ffi") 
ffi.cdef[[ 
void lowercase(char* str); 
]] 
local utility = ffi.load("utility")  
local buf = ffi.new("char[?]", "HELLO WORLD") 
utility.lowercase(buf) 
print("Result: ", ffi.string(buf)) 
1

私は全くstrが何であるかはわかりませんが、tolowerはそれが正しい値を返すので、本当にbufを印刷したいと考えています。

関連する問題