【发布时间】:2017-11-02 21:02:36
【问题描述】:
标题很难写好,所以让我解释一下我的情况:
另一个团队开发了一个库。他们提供一个头文件和一个*.so 文件。头文件可供我们使用,我们可以将其包含在我们自己的代码中并根据需要使用它。但是,*.so 是随我们运行的平台一起提供的。在构建我们的软件时,我们无权访问此 *.so。因此,我们也不能真正使用头文件,因为链接器会期望 *.so 在某个时候可用。
现在我要做的是创建一个包装类,它在运行时加载*.so 文件,然后使用dlsym() 按名称查找函数,并将它们映射到函数指针。
这是唯一的选择吗?有没有办法我可以使用头文件,但告诉链接器不要在构建时解析符号,而是在我们有机会加载 *.so 文件后尝试在运行时解析它们?
注意这里的真正平台是 Android(通过 NDK),但希望一般的 linux 建议在这种情况下也能正常工作,因为我们有可用的 POSIX API。
【问题讨论】:
标签: android c++ c android-ndk