我正在尝试从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是执行一般多边形细分的函数库,它在链接期间提供这些重复项。
任何帮助都将被理解为什么是重复。