2012-05-03 3 views
0

어제 저는 doc = xmlParseFile(fname); 함수를 사용하여 C로 작성된 프로그램으로 XML 파일을 구문 분석 할 수있었습니다.XML 파싱 파일이 NULL을 반환합니다.

이제 NULL을 반환합니다 (다음 줄에 걸려 오류가 발생 함). 이 프로그램은 한 달 이상 동안 변경되지 않았으며 XML 파일은 지난주부터 변경되지 않았으며 libxml2는 25.3.2012 이후 변경되지 않았습니다. xmllint는 아무 문제없이 파일을 실행하고 다른 컴퓨터 (Solaris, 같은 소스 코드를 사용하지만 다른 컴파일러와 라이브러리)에서 파싱 할 수 있습니다. 그래서 내가 뭘 더 검사해야합니까? 이 스레드와 비슷하게 들린다. 비록 해킹 된 솔루션을 피하고 싶지만, http://ubuntuforums.org/showthread.php?t=1402824 (아직 시도하지 않았다)

C 프로그램은 실제로 MatLab에서 호출 된 mex 함수이지만 아무런 차이가 없어야한다. , 권리? 나는 이것을 GNU/Linux에서 돌리고있다.

+0

사용중인 xml 라이브러리가 무엇인지 명확하게해야합니다. –

+0

이것은 클러스터에 있으므로 관리자 권한은 없지만 이름은 /usr/lib64/libxml2.so.2.7.6 (또는 libxml2.a 또는 libxml2.la)입니다. 이것은 64 비트 머신이므로 lib64입니다. 그 질문에 대답합니까? – craq

+0

당신은 적절한 64 비트 라이브러리에 대해 컴파일하고 링크 했습니까? (libc, libm 등등) –

답변

0

이 시도 :

FILE *f = fopen("~/myxml.log", "a"); 
    xmlSetGenericErrorFunc(f, NULL); 
    doc = xmlParseFile(fname); 
    fclose(f); 

을하고 로그 파일에 결과를 찾습니다.

+0

좋은 생각이지만 파일을 열 수 없습니다. (fopen 호출 후 f == NULL이됩니다.) 어떤 이유입니까? 권한은 운영 체제에 따라 666. – craq

+0

입니다. 창 아래에 "c : \ myxml.log"가있을 수 있습니다. UNIX에서 "~"는 "$ HOME"으로 확장됩니다. 아마도 설정되지 않았을 것입니다. "/home/craq/myxml.log"또는 귀하가 살기를 시도 할 수 있습니다. –

관련 문제