C++でlibxml2ライブラリを使用しようとしていますが、解決方法がわからないエラーが発生します。私のコードは、ライブラリの基本的な例です。どのように解決するには: "未知のシンボル` xmlStrcmp 'に対してR_X86_64_PC32を切り詰める再配置:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <libxml/xmlmemory.h>
#include <libxml/parser.h>
void
parseStory (xmlDocPtr doc, xmlNodePtr cur) {
xmlChar *key;
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
key = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
printf("keyword: %s\n", key);
xmlFree(key);
}
cur = cur->next;
}
return;
}
static void
parseDoc(char *docname) {
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(docname);
if (doc == NULL) {
fprintf(stderr,"Document not parsed successfully. \n");
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr,"empty document\n");
xmlFreeDoc(doc);
return;
}
if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
fprintf(stderr,"document of the wrong type, root node != story");
xmlFreeDoc(doc);
return;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
parseStory (doc, cur);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return;
}
int
main(int argc, char **argv) {
char *docname;
if (argc <= 1) {
printf("Usage: %s docname\n", argv[0]);
return(0);
}
docname = argv[1];
parseDoc (docname);
return (1);
}
プロジェクトを作成する際にこれらのエラーが発生します。
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:26: `xmlStrcmp」
/cygdriveの/ C /ユーザ/ロビン/ドキュメント/ NetBeansProjectsへ 未定義の参照/xml/main.cpp:26:(.text+0x36): 収まるように切り捨て移転:未定義のシンボルに対するR_X86_64_PC32 `xmlStrcmp」
/cygdriveの/ C /ユーザ/ロビン/ドキュメント/ NetBeansProjects/XML /メイン.cpp:27: `xmlNodeListGetString 'への未定義の参照
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:27:(.text+0x59): 再配置が収まるように切り捨て:R_X86_64_PC32を未定義のシンボルに対して `xmlNodeListGetString」を
ビルド/デバッグ/ Cygwinの-のWindows/main.o:機能で
parseDoc': /cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:42: undefined reference to
xmlParseFile」/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:42:(.text+0xad): 移転切り詰められて:未定義シンボルに対してR_X86_64_PC32 `xmlParseFile '
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:49: `xmlDocGetRootElement」
/cygdriveの/ C /ユーザ/ロビン/ドキュメント/ NetBeansProjects/XML /主に未定義参照。 CPP:。+ 0xec 49 :(テキスト):収まるように切り捨て 移転:R_X86_64_PC32未定義のシンボルに対する `xmlDocGetRootElement」
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:53: `xmlFreeDoc」へ 未定義の参照
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:53:(.text+0x126): 収まるように切り捨て移転:未定義のシンボルに対するR_X86_64_PC32 `xmlFreeDoc '
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:57:xmlStrcmp`へ 未定義の参照'
/cygdriveの/ C /ユーザ/ロビン/ドキュメント/ NetBeansProjects/XML/main.cppに:57 :(テキスト+ 0x142):収まるように切り捨て 移転:未定義のシンボルに対するR_X86_64_PC32 `xmlStrcmp」
/cygdriveの/ C/Users/robin/Documents/NetBeansProjects/xml/main.cpp:59: `xmlFreeDoc 'への未定義の参照
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:59 :(。テキスト+ 0x17a):収まるように切り捨て 移転:R_X86_64_PC32未定義のシンボルに対する `xmlFreeDoc」
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:65:xmlStrcmp`へ 未定義の参照'
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:65:(.text+0x1a6):収まるように切り捨て 移転:未定義のシンボルに対するR_X86_64_PC32 `xmlStrcmp'
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:72: 未定義参照)xmlFreeDoc」
/cygdrive/c/Users/robin/Documents/NetBeansProjects/xml/main.cpp:72:(.text+0x1d9 `へレンス:収まるように切り捨て 移転:未定義のシンボルに対するR_X86_64_PC32 ` xmlFreeDoc '
ビルド/デバッグ/ Cygwinの-のWindows/main.o:main.cppに:(RDATA $ .refptr.xmlFree [.refptr.xmlFree] +は0x0):。 `xmlFreeへ 未定義の参照'
私はこのポストWhat does this GCC error "... relocation truncated to fit..." mean?を読んだことがありますが、私は問題を解決するための手がかりがありません。私のIDEは、Windows 10 64ビットマシン上のCygwin64を備えたNetbeans 8.2です。私はlibxml2-2.9.3-win32-x86_64.7zとiconv-1.14-win32-x86_64.7zを含んでいます。あなたが私を助けることを願っています、ありがとう。
[このGCCエラー "...再配置が収まるように切り捨てられました..."という意味の重複がありますか?](http://stackoverflow.com/questions/10486116/what-does-この-gcc-error-relocation-truncated-to-fit-mean) –
私が書いたように、私は投稿を読むが、私の問題の解決策は見つけられなかった。 – rpanske
こんにちは@rpanske!あなたは今この問題の解決策を見つけましたか?私はNetbeans IDEとCygwinコンパイラを使用してWindowsでMacでうまく動作していたSQLiteとPythonでC++コードをコンパイルしています。同じエラーが発生しています – user1998463