我有一个由 cluster.h 和 cluster.c 制作的 C 库。我用gcc -c cluster.c
.
我必须在 C++ 项目的主类中使用这个库的方法。这是我使用的makefile:
abundancebin: main.o profileManager.o myHash.o myMalloc.o myStack.o myStringHash.o
g++ -o abundancebin main.o profileManager.o myHash.o myMalloc.o myStack.o myStringHash.o
main.o: main.cpp
g++ -c main.cpp
profileManager.o: profileManager.cpp
g++ -c profileManager.cpp
myHash.o: myHash.cpp
g++ -c myHash.cpp
myMalloc.o: myMalloc.cpp
g++ -c myMalloc.cpp
myStack.o: myStack.cpp
g++ -c myStack.cpp
myStringHash.o: myStringHash.cpp
g++ -c myStringHash.cpp
clean:
-rm *.o abundancebin
我尝试在其他导入之后使用 main.cpp 中的 C 库导入:
#ifdef __cplusplus
extern "C" {
#endif
#include <cluster.h>
#ifdef __cplusplus
}
#endif
但是当我编译时make
我有这个响应:
main.cpp:29:21: fatal error: cluster.h: No such file or directory
#include <cluster.h>
^
compilation terminated.
make: *** [main.o] Error 1
如果我使用“cluster.h”而不是我有这个错误:
main.o:main.cpp:(.text+0xf68): riferimento non definito a "kmedoids"
main.o:main.cpp:(.text+0xf68): rilocazione adattata per troncamento: R_X86_64_PC32 contro il simbolo non definito "kmedoids"
/usr/bin/ld: main.o: bad reloc address 0x18 in section
.xdata' collect2:错误:ld 返回 1 退出状态 make:* [abundancebin] 错误 1`
我还尝试将我需要的代码部分从 C 库复制到 C++ 项目,但编译器报告了许多这样的错误:
error: invalid conversion from ‘void*’ to ‘int*’ [-fpermissive]
vector = malloc(nnodes*sizeof(int));
库文件与项目文件位于同一文件夹中。有人可以帮忙吗?谢谢