重复符号 - Mach-O链接器错误

时间:2018-01-09 18:30:34

标签: ios dynamic frameworks duplicates symbols

我正在尝试从NASA创建一个代码框架,主要用Objective-C编写一些C.我打算在用Swift编写的项目中使用该框架。

我正在制作一个Mach-O类型为动态库的框架

当我移植代码并解决了大部分弃用时,我想出了一个错误,当我到达链接部分时,这个错误让我感到困惑。

duplicate symbol ___gl_pqHeapInsert in:
/Users/.../Objects-normal/arm64/priorityq-heap.o
/Users/.../Objects-normal/arm64/priorityq.o

实际上有6个这样的错误。我只关注这一个(___gl_pqHeapInsert)。

以下是我所看到的引用此代码的相关部分。

来自 priorityq-heap.h

。 。

#define pqInit(pq)      __gl_pqHeapInit(pq)
#define pqInsert(pq,key)    __gl_pqHeapInsert(pq,key)
#define pqMinimum(pq)       __gl_pqHeapMinimum(pq)

。 。

来自 priorityq-heap.c

/* Include all the code for the regular heap-based queue here. */
#include "priorityq-heap.c"

/* Now redefine all the function names to map to their "Sort" versions. */
#include "priorityq-sort.h"

.
.
.

/* really __gl_pqHeapInsert */
/* returns LONG_MAX iff out of memory */

PQhandle pqInsert( PriorityQ *pq, PQkey keyNew )
{
  long curr;
  PQhandle free;
.
.
.

}

priorityq.c

PQhandle pqInsert( PriorityQ *pq, PQkey keyNew )
{long curr;
if( pq->initialized ) {
    return __gl_pqHeapInsert( pq->heap, keyNew );
  }    
.
.
.

观察

  • 原始代码(来自NASA' svn)运行良好,因为它创建了一个静态代码 嵌入到示例项目中的库(libWorldWind.a)。我的目标是将其作为框架提取并在Swift项目中使用。 (原版的 代码位于SVN for NASA Worldwind(iOS)

  • 错误导入" .m"时,此错误(重复符号)很常见。在进口声明中。但是,项目似乎并非如此。

  • libtess是执行一般多边形细分的函数库,它在链接期间提供这些重复项。

任何帮助都将被理解为什么是重复。

0 个答案:

没有答案