在/opt/theos/include/下明明已经把.h文件放进去了,可是为什么在.xm文件上#import"xxxxx.h"的时候还是会报错file not found???请问是什么原因呢
我看到http://bbs.iosre.com/t/tweak-xm-29-5294-error-unknown-type-name-cllocation/4053 了,
用#import <>啊
把corelocation的 头文件拉进theos? Excuse me?
试过在.xm上#import<xxx/xxx.h> 或者#import"xxx.h"会报找不到xxx.h,或者未定义xxx。请问还有什么地方需要设置的吗?
你知道#import <> 和#import ""的区别吗。。。。。。
<>是引入系统文件,""是引入自己编写的文件,可是我也试过用#import<>了啊,还是编译不通过
。。。。工程目录给我
等一下哈,项目在公司的电脑里面,我现在重新写一个把源码发给你看看
这个是.xm文件:
%hook CLGeocoder
#import <CoreLocation/CLLocation.h>
- (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionHandler{
%orig;
}
%end
这个是Makefile:
include $(THEOS)/makefiles/common.mk
TWEAK_NAME = MyTweak
MyTweak_FILES = Tweak.xm
MyTweak_FRAMEWORKS = CoreLocation
include $(THEOS_MAKE_PATH)/tweak.mk
这个是报错的信息:
bogon:mytweak Jk_Chan$ make
Making all for tweak MyTweak…
==> Preprocessing Tweak.xm…
==> Compiling Tweak.xm (armv7)…
Tweak.xm:23:152: error: unknown type name ‘CLLocation’
…CLGeocoder* _LOGOS_SELF_CONST, SEL, CLLocation , CLGeocodeCompletionHan…
^
Tweak.xm:23:166: error: unknown type name ‘CLGeocodeCompletionHandler’
…CLGeocoder _LOGOS_SELF_CONST, SEL, CLLocation , CLGeocodeCompletionHan…
^
Tweak.xm:23:345: error: unknown type name ‘CLLocation’
…CLGeocoder _LOGOS_SELF_CONST, SEL, CLLocation , CLGeocodeCompletionHan…
^
Tweak.xm:23:359: error: unknown type name ‘CLGeocodeCompletionHandler’
…CLGeocoder _LOGOS_SELF_CONST, SEL, CLLocation *, CLGeocodeCompletionHan…
^
Tweak.xm:4:184: error: declaration of ‘CLGeocodeCompletionHandler’ must be
imported from module ‘CoreLocation.CLGeocoder’ before it is required
…_LOGOS_SELF_CONST self, SEL _cmd, CLLocation * location, CLGeocodeComple…
^
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/CoreLocation.framework/Headers/CLGeocoder.h:21:16: note:
previous declaration is here
typedef void (^CLGeocodeCompletionHandler)(NSArray< CLPlacemark *> * __n…
^
Tweak.xm:5:93: error: cannot initialize a parameter of type ‘int *’ with an
lvalue of type ‘CLLocation *’
…cmd, location, completionHandler);
^~~~~~~~
6 errors generated.
make[3]: *** [/Users/Jk_Chan/Desktop/tweak/mytweak/.theos/obj/debug/armv7/Tweak.xm.fc8db1a8.o] Error 1
make[2]: *** [/Users/Jk_Chan/Desktop/tweak/mytweak/.theos/obj/debug/armv7/MyTweak.dylib] Error 2
make[1]: *** [internal-library-all] Error 2
make: *** [MyTweak.all.tweak.variables] Error 2
bogon:mytweak Jk_Chan$
帮忙看下哪里弄错了吧,谢谢哈
用gist.github.com 论坛贴的代码没法看全部被当作markdown处理了
要不我加你QQ发给你看看吧
.xm上面那里应该是#import <CoreLocation/CLLocation.h>
贴漏了
哪个#import<xxx/xxx.>被滤掉了,显示不出来- -
解决了,要import两个头文件才行- -,感谢
同样的问题,你的解决了吗
你没有这个类的文件,import,肯定找不到啊 。。你把最后一个import去掉试试。,
具体怎么解决的 ,能说的详细点吗 .
我也遇到这个错误
unknown type name 'CLGeocodeCompletionHandler'
最后找到这个报错的原因居然是没有引入 CoreFoundation
其它需要注意的地方
MakeFile - CoreFoundation 和 CoreLocation 必要
你的项目名称_FRAMEWORKS = CoreFoundation Foundation UIKit CoreLocation
.xm - 需要引入头文件
#import <CoreLocation/CoreLocation.h>
/opt/theos/include
也许需要把 CoreLocation 的头文件放到这个目录, 也许不需要, 因为在MakeFile已经加入 CoreLocation.framework 了