我想在linux(debian 64位)中使用pdfium庫。我管理(最終)編譯pdfium的版本_x64版本,並且測試程序似乎工作。但是,我似乎無法在單獨的項目中使用這些庫。 這是我的文件:在linux上連接pdfium
#include <iostream>
#include "fpdfview.h"
#include "fpdftext.h"
#include "fpdfdoc.h"
#include "fpdfedit.h"
main(){
FPDF_InitLibrary();
std::cout << "Hello World!"<<std::endl;
return 0;
}
,這是我的Makefile:
CC = g++
CFLAGS = -Wall -g -Wno-unused-variable -Wno-reorder -I/usr/include/pdfium/core/include -I/usr/include/pdfium/fpdfsdk/include -I/usr/include/pdfium/third_party -I/usr/include/pdfium/v8/include
LIBS_pdfium = -static -L/usr/lib/pdfium
LDFLAGS = $(LIBS_pdfium)
Main : Main.o
${CC} ${CFLAGS} Main.o ${LDFLAGS} -o Main
Main.o : Main.cpp
${CC} ${CFLAGS} -c -std=c++11 Main.cpp
clean:
rm *o Main
當我運行makefile結果是:
g++ -Wall -g -Wno-unused-variable -Wno-reorder -I/usr/include/pdfium/core/include -I/usr/include/pdfium/fpdfsdk/include -I/usr/include/pdfium/third_party -I/usr/include/pdfium/v8/include Main.o -static -L/usr/lib/pdfium -o Main
Main.cpp:11: error: undefined reference to 'FPDF_InitLibrary'
collect2: error: ld returned 1 exit status
我也嘗試使用在/ home/username/pdfium/out/Release_x64/obj中的庫,但得到了相同的錯誤
我知道呃ror:undefined reference to FPDF_InitLibrary
表示存在鏈接錯誤。因此我使用objdump檢查了/ home/username/pdfium/out/Release_x64/obj中的庫,其中一個包含了InitLibrary符號。這似乎沒有道理......
我不知道我是否指的是包含或庫中的錯誤路徑,或者如果它是其他的東西是錯誤的。
我試着理解鉻pdf pdf插件項目makefile,因爲我認爲這可能會幫助我理解我應該使用的東西,但不幸的是它沒有幫助。
我做錯了什麼想法?
檢查測試程序是否將fpdf包含在'extern「C」{}'塊中(或者測試程序ar'.c'不是'.cpp',則不需要此塊)。如果是這樣,你必須在fpdf包含中加入'extern「C」{}'。這是首先想到的事情。 –
Thanks @RudolfsBundulis我看了一個測試,他們沒有extern「c」,它是一個cpp文件。在包含文件中有一個外部「C」。這是相關的嗎? – user3872358
如果'extern「C」'包裝你正在使用的相同的包含文件是相關的(很準確 - 如果它用於聲明'FPDF_InitLibrary'的include包含它是相關的)。但是不要浪費時間進行測試 - 只需將'extern「C」{}'添加到您的應用程序中 - 最有可能的就是您需要解決這個問題。 –