【问题标题】:Removing Circular Dependency in Native android去除原生 android 中的循环依赖
【发布时间】:2017-02-20 11:10:27
【问题描述】:

我有一个文件 A.c 和另一个文件 B.c,在 A.c 中有一个函数 func1 在 B.c 中定义,在 B.c 中有一个函数 func2 在 A.c 中定义。现在,当我尝试使用 A.c 和 B.c 构建单独的 so 库时,编译器会在链接时引发循环依赖错误。 那么有什么办法可以将两个库链接在一起吗?或者我可以延迟链接,即 libA.so 在编译 libB.so 之前不会链接。

例如:-

文件 A.h :-

void func1();

文件A.c

void func1()
{
   printf ("Hello A");
}

void other_function()
{
   func2();
}

文件B.h

void func2();

文件B.c

void func2()
{
  printf("Hello B");
}

void other_function ()
{
    func1();
}

【问题讨论】:

  • 你在头文件中使用声明吗?还是在 func2 中调用 func1 并且 func2 调用 func1?您能否提供一个简短的源代码示例,如下所述:stackoverflow.com/help/mcve
  • 请检查。如果您有任何疑问,请告诉我@KamiKaze
  • 尝试在 A.c 和 B.c 中同时包含 A.h 和 B.h。
  • this的回答。
  • 包含哪些内容?

标签: android c shared-libraries native circular-dependency


【解决方案1】:

我们可以通过使用静态库而不是共享库来实现这种链接。我用过它,它奏效了。

【讨论】:

    猜你喜欢
    • 2019-04-30
    • 1970-01-01
    • 2020-04-12
    • 2013-12-10
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多