0
我有一個C++函數,我想從Python調用。該函數本身非常簡單,但它涉及只能在C++中完成的IPC調用。爲了編譯C++代碼,需要鏈接大量的其他庫。我試圖用SWIG來實現這一點。我有一個Makefile文件,看起來像這樣:將SWIG包裝與其他庫鏈接
all: swig object shared
object: swig
${CC} -c ${MODULE}_wrap.cxx ${INCLUDES}
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so
swig:
${SWIG} -c++ -python ${MODULE}.i
有了這個,一切編譯罰款,但後來我的導入模塊中的Python給了我「未定義的符號」錯誤。如果我改變shared
行:
shared:
${CC} -Wl,--verbose -shared ${MODULE}_wrap.o -o _${MODULE}.so ${LIBS}
它失敗collect2: ld returned 1 exit status
編譯,但並沒有告訴我的錯誤是什麼。詳細的鏈接器輸出有大量的行,表示「試圖打開[某些庫]失敗」,但少數這些行說「成功」。難道只有那些說失敗的人阻止了鏈接的發生?我試圖用SWIG模塊做甚麼?
我不能在SWIG生成的庫上執行'ldd',因爲它只是一個目標文件。但我仍然嘗試過。 '-rpath ='不起作用,但我試過'-Xlinker -rpath -Xlinker [path]'。我也嘗試過'LD_LIBRARY_PATH'。我仍然收到未定義的符號錯誤。我覺得我失去了一些明顯的東西。 – sagargp