diff --git a/.gitignore b/.gitignore index 8dd2155..88731b0 100644 --- a/.gitignore +++ b/.gitignore @@ -32,4 +32,9 @@ *.app .vscode .cache -build \ No newline at end of file +build +cjpm.lock +.script-hash +build-script-cache +liboutput +target \ No newline at end of file diff --git a/cjpm.toml b/cjpm.toml index 0b960f4..b491a0b 100644 --- a/cjpm.toml +++ b/cjpm.toml @@ -1,21 +1,16 @@ [package] -name = "LuaCangjia_api" -version = "0.0.0" +name = "LuaCangjie_api" +version = "0.0.1" description = "Lua C API bindings for Cangjie" -license = "GPLv3" - +cjc-version = "0.49.1" # 必需:指定所需 cjc 最低版本 +license = "GPLv3" # 可选:许可证信息 +output-type ="executable" [dependencies] [ffi.c] -# C 库头文件路径 -include = ["lib/lua"] -# 编译好的库文件路径 -library = ["liboutput"] -# 链接的库名(去掉 lib 前缀和 .so/.a 后缀) -link = ["my_clib"] +luacjapi.so.path = "./lib/build/luacjapi" [scripts] -# 构建钩子,指向你的 build.cj pre-build = "cjpm run build.cj pre-build" post-build = "cjpm run build.cj post-build" -pre-clean = "cjpm run build.cj pre-clean" \ No newline at end of file +pre-clean = "cjpm run build.cj pre-clm ean" \ No newline at end of file diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index feadeeb..21c736e 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -16,10 +16,6 @@ include_directories(${NATIVERENDER_ROOT_PATH} # 添加lua子目录 add_subdirectory(lua) -# 创建共享库,使用标准的entry命名 -add_library(runner SHARED - script_run.c - json/cJSON.c) add_library(luarunner STATIC lua_runner.cpp) @@ -31,17 +27,4 @@ target_link_libraries(luarunner ) target_link_libraries(luacjapi luarunner -) - -# 链接库 -#target_link_libraries(runner -# lua # 链接到lua库 -# m) -#add_executable(test test.c) -#target_link_libraries(test runner) - -#add_executable(testcpp test.cpp) -#target_link_libraries(testcpp luarunner) - -add_executable(test1 test1.c) -target_link_libraries(test1 luacjapi) \ No newline at end of file +) \ No newline at end of file diff --git a/lib/lua_runner.cpp b/lib/lua_runner.cpp index af1e255..96f33e2 100755 --- a/lib/lua_runner.cpp +++ b/lib/lua_runner.cpp @@ -72,6 +72,7 @@ lua_State *Lua_runner::get_lua_State() int Lua_runner::load_lib(const char *path,const char *name) { + //如果引入哈希表会导致删除包时的多次哈希查询,污染缓存。同时性能仅与数组实现相当 if(!this->check_luastatue()) { return -1; diff --git a/src/main.cj b/src/main.cj index e09d546..ca1756e 100644 --- a/src/main.cj +++ b/src/main.cj @@ -1,17 +1,17 @@ -@FFI("LuaCangjie_api") +package LuaCangjie_api @C struct lua_runner { - + } -foreign func init_lua_runner(self:CPointer,pathio:CString,pkgpath:CString,io_input:CFunc<() -> Int32>,io_output:CFunc<() -> Int32>):Int32 -foreign func get_errno():Int32 -foreign func getresult(runner:CPointer):CString -foreign func run(self:CPointer,path:CString,arg:CString):Int32 - +foreign{ + func init_lua_runner(self:CPointer,pathio:CString,pkgpath:CString,io_input:CFunc<() -> Int32>,io_output:CFunc<() -> Int32>):Int32 + func get_errno():Int32 + func getresult(runner:CPointer):CString + func run(self:CPointer,path:CString,arg:CString):Int32 +} main(): Int64 { - var runnr = lua_runner println("hello world") return 0 } \ No newline at end of file