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));
ライブラリ ファイルは、プロジェクト ファイルと同じフォルダーにあります。誰か助けてくれませんか?ありがとうございました