首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何包含库.h文件?

如何包含库.h文件?
EN

Stack Overflow用户
提问于 2015-06-09 17:12:56
回答 1查看 285关注 0票数 0

我已经成功地从简单的Dagger-2代码中生成了Objc .m和.h文件。

https://gist.github.com/OscarRyz/ffd976fcae9acf87dbe1

现在,我试图使用j2objcc编译这些文件,但是错误消息说它找不到Dagger-2类的.h:

代码语言:javascript
复制
j2objcc  -c  -I. `find app -name *.m`
In file included from app/DaggerSearchComponent.m:10:
./app/SearchInPage_Factory.h:10:10: fatal error: 'dagger/internal/Factory.h' file not found
#include "dagger/internal/Factory.h"
         ^
1 error generated.
app/SearchComponent.m:11:10: fatal error: 'dagger/Component.h' file not found
#include "dagger/Component.h"
         ^
1 error generated.
In file included from app/SearchInPage_Factory.m:8:
./app/SearchInPage_Factory.h:10:10: fatal error: 'dagger/internal/Factory.h' file not found
#include "dagger/internal/Factory.h"
         ^
1 error generated.
In file included from app/SearchInPage_MembersInjector.m:9:
./app/SearchInPage_MembersInjector.h:10:10: fatal error: 'dagger/MembersInjector.h' file not found
#include "dagger/MembersInjector.h"
         ^
1 error generated.
app/SearchModule.m:10:10: fatal error: 'dagger/Module.h' file not found
#include "dagger/Module.h"
         ^
1 error generated.
In file included from app/SearchModule_ProvideHostFactory.m:8:
./app/SearchModule_ProvideHostFactory.h:10:10: fatal error: 'dagger/internal/Factory.h' file not found
#include "dagger/internal/Factory.h"
         ^
1 error generated.
In file included from app/SearchModule_ProvideHttpClientFactory.m:9:
./app/SearchModule_ProvideHttpClientFactory.h:10:10: fatal error: 'dagger/internal/Factory.h' file not found
#include "dagger/internal/Factory.h"
         ^
1 error generated.

问:这是否意味着我需要在生成ObjC代码的同时获得库源代码,以便为这些代码生成.h?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-09 22:28:47

原始答案来自@tabll

匕首不是在j2objc中分发的,所以您必须自己构建它。要做到这一点(需要Maven,在Building wiki中进行了描述):

代码语言:javascript
复制
git clone https://github.com/google/dagger.git
cd dagger
mvn install
j2objc -d build -classpath $J2OBJC_HOME/lib/javax-inject.jar -sourcepath core/src/main/java `find core/src/main/java -name *.java`
cd build
j2objcc -c -I. `find dagger -name *.m`
ar -r libdagger.a *.o

注意:指定J2OBJC_HOME,或者在您的j2objc发行版中解压缩,或者如果您构建j2objc,则指定它的dist目录。要进行测试,"ls $ j2objc _HOME/j2objc“应该列出j2objc脚本。

这些指令生成macosx架构,在测试时非常有用。这些文件需要为您想要使用的每个体系结构重新编译--最简单的方法是在Xcode中创建一个静态库项目,添加已翻译的文件,然后将该项目包含到您的应用程序中,并将其作为应用程序的依赖项添加。

ar将警告“libdagger.a(Packy-info.o)没有符号”,这可以忽略,因为它没有任何符号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30738622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档