把lua导入到application编译失败

这是编写的makefile文件,我想把lua编译到application中去使用

出现Libstdc++ is deprecated; move to libc++ with a minimum deployment target of iOS 7.请问这是什么问题?


llapp_FILES= src/lua.c src/lualib.c 我记得应该是这样
或者用+=

cmake可以扫描添加某个目录下所有文件makefile我就不知道了

理论上应该可以
llapp_FILES=main.m XXXXX XXXX XXXX 再加上$(find src/ -name “*.c”)

这样又找不到头文件了?

我找个demo给你看看。

files= 没记错的话会覆盖之前的值

哦抱歉我前面没注意。你后面的_FILES= 应该是会覆盖之前的值导致无法编译。
其余还有什么问题你国clone不下来lua我也没法demo,要么你发我一个我帮你看看?
我这里其余测试成功的makefile如图

1 个赞

你看这里之后的files= 覆盖了之前的值导致theos只编译了最后一次赋值的值,所以这里肯定是错的

改成我上面那样还有问题的话cflags 加个-I 指定头文件搜索目录

还是找不到头文件

…/lua是绝对路径

include $(THEOS)/makefiles/common.mk

TWEAK_NAME = MUGKit
MUGKit_FILES = $(wildcard src/*.xm) $(wildcard lua/*.c)
MUGKit_CFLAGS = -I ./lua -Wno-deprecated-declarations
include $(THEOS_MAKE_PATH)/tweak.mk

after-install::
	install.exec "killall -9 SpringBoard"

lua里面函数还是通不过编译,无法调用,

是不是说明可执行文件并没有编译通过,无法调用

Makefile怎么写的?

解决了,贴出makefile

1.第一个问题,已解决
按上面的办法引入lua,通过编译,但调用lua函数会报错:

 symbol(s) not found for architecture arm64

添加extern "C"后不再报错

extern "C"{
	#include "lua.h"
	#include "lauxlib.h"
	#include "lualib.h"
}

2.弄不懂
现在的问题是,Makefile添加TARGET后:

TARGET = iphone:10.3:10.3  
//symbol(s) not found for architecture arm64(非常多的lua标记都说找不到)
TARGET = iphone:11.2:10.3 //通过编译,无错
TARGET = iphone:12.2:10.3 //通过编译,无错
TARGET = iphone:8.0:8.0 //通过编译,无错
TARGET = iphone:9.3:8.0 
//ld: in '/usr/lib/system/liblaunch.dylib', missing required architecture arm64 in file /usr/lib/system/liblaunch.dylib (2 slices) for architecture arm64

Xcode: 10.2.1
9.3,10.3,11.2是从theos的sdks下载,放到Xcode的sdk目录里,8.0忘了从哪里下载的了:
55