IOSOpenDev建立logos tweak项目突然出错

错误提示:
ld: warning: directory not found for option ‘-L/Users/pengruding/Library/Developer/Xcode/DerivedData/hiOicq-eeaffjnilmjvpjbpsptjachlnqbi/Build/Products/Release-iphonesimulator’
ld: warning: directory not found for option ‘-F/Users/pengruding/Library/Developer/Xcode/DerivedData/hiOicq-eeaffjnilmjvpjbpsptjachlnqbi/Build/Products/Release-iphonesimulator’
ld: warning: ignoring file /opt/iOSOpenDev/lib/libsubstrate.dylib, missing required architecture x86_64 in file /opt/iOSOpenDev/lib/libsubstrate.dylib (2 slices)
Undefined symbols for architecture x86_64:
“_MSHookMessageEx”, referenced from:
_logosLocalInit() in hiOicq.o
ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

之前还好好的,今天就突然变这样了。
新建项目-导入libsubstrate,删除xm所有行,不加代码 编译只有这样的提示
ld: warning: directory not found for option ‘-L/Users/pengruding/Library/Developer/Xcode/DerivedData/hiOicq-eeaffjnilmjvpjbpsptjachlnqbi/Build/Products/Release-iphonesimulator’
ld: warning: directory not found for option ‘-F/Users/pengruding/Library/Developer/Xcode/DerivedData/hiOicq-eeaffjnilmjvpjbpsptjachlnqbi/Build/Products/Release-iphonesimulator’
ld: warning: ignoring file /opt/iOSOpenDev/lib/libsubstrate.dylib, missing required architecture x86_64 in file /opt/iOSOpenDev/lib/libsubstrate.dylib (2 slices)

加上代码就多出两个这样的错误
Undefined symbols for architecture x86_64:
“_MSHookMessageEx”, referenced from:
_logosLocalInit() in hiOicq.o
ld: symbol(s) not found for architecture x86_64

clang: error: linker command failed with exit code 1 (use -v to see invocation)

已经解决,问题原因:
新建项目后,不知道什么原因IOSOpenDev会自动添加Framework/Foundation.framework,删除就OK了,一切正常

/opt/iOSOpenDev/lib/libsubstrate.dylib这个文件有问题吧,用iOS设备上的文件换一下

结贴,问题原因:不要引用除了自己使用的任何Freamwork

什么意思?你把实际情况描述一下吧,不要总结提炼

已经从新编辑

但是提示的问题貌似跟Foundation.framework无关,而是libsubstrate.dylib导致的啊。你按照书上的步骤更换了OSX上的libsubstrate吗?

今天我也遇到相似情况,也是用iosopendev下的logos tweak,之前是在xcode5上的一点问题都没有,现在我在一个新电脑上配的xcode6.1的环境,编译遇到
Undefined symbols for architecture x86_64:
“_MSHookMessageEx”, referenced from:
_logosLocalInit() in hiOicq.o
ld: symbol(s) not found for architecture x86_64
这样的字样,我不太认可这个问题跟Foundation.framework相关,即便我删除了这个也没啥用。
感觉像是libsubstrate的问题,但是我更换成github上iosopendev里面13年底saurik更新的也不行,再试了从pad上提取过来的最新的ios8.11的也不行,很奇怪,不知道有什么解决方法 @snakeninny

这貌似就是libsubstrate.dylib的问题,但是它怎么会要求一个x86_64的版本呢?

不知道啊,挺费解的,xcode6.11在iosopendev下的模板问题?我看了project的 architecture很普通,跟我之前老版本的没啥区别,只有arm7 arm64等 没有x86_64,群下午申请加入了,还没加成现在

你从设备上提取libsubstrate.dylib更换一下iOSOpenDev的文件试试

换过了哎,不行,奇怪的

XCODE上面目标选错了

必须要选ARM设备作为目标 不能用X86 X64的机器作为目标

这个到底是啥问题,如果编译的时候选择自己的手机而不是模拟器的话就不会报这个错,有没有解决方法?@snakeninny

我没有用过opendev,不大清楚

一定要在真机上测试哦。具体原因不知,不过模拟机并没有越狱,而且也没有装你需要hook的App,再者libsubstrate.dylib也不是你模拟器的libsubstrate.dylib。最后最后,不能够SSH看Log,怎么着都不是好的测试方式啦

Meh.
Create a symbol stub version of libsubstrate.dylib also works.

在opdendev中新建工程会有说明
#error iOSOpenDev post-project creation from template requirements (remove these lines after completed) –
Link to libsubstrate.dylib:
(1) go to TARGETS > Build Phases > Link Binary With Libraries and add /opt/iOSOpenDev/lib/libsubstrate.dylib
(2) remove these lines from *.xm files (not *.mm files as they’re automatically generated from *.xm files)

即要将 /opt/iOSOpenDev/lib/libsubstrate.dylib 添加到库引用 我的是这么解决的希望对后来者有帮助。

1 个赞

模拟器没有越狱啊肯定不行的

找了很久,终于找到答案了