2012-07-03 43 views
3

我製作了JNI函數併成功將它們與C++動態庫鏈接。我把它們全部工作得很好,但是我遇到了一個函數的問題,我從用於從文件中讀取數據的C++中使用的FileHandle類中得到了符號查找錯誤。 知道它在正常的C++項目上工作,但不在DLL中。JNI問題:C++ DLL中的FileHandle符號查找錯誤

/usr/lib/jvm/jdk1.7.0/bin/java:符號查找錯誤:/home/.../NetBeansProjects/TRIOGUI/dist/libNativeAdd.so:未定義的符號:_ZN5Gdsii9GdsParserC1EPKcN7SoftJin10FileHandle8FileTypeEN5boost8functionIFvS2_ESaIvEEE Java結果:127

任何人都可以幫助我嗎? :)

+1

你應該提供您所使用的代碼...無論在Java和C++方面。 – Dennis

+0

這是我在我的項目中使用的庫中的一個函數。我在項目屬性中的C++編譯器中引用了它,並且該庫在正常項目中的所有函數都正常工作,但是當我將項目製作爲DLL文件時,所有函數和我製作的本機函數都能正常工作,除此之外功能。 – MohamedMansour

回答

1

我發現這個問題,謝謝大家。 我使用的庫有一個庫文件「somefile.a」,我從庫文件夾中丟失了。 我得到了庫,在項目包括它和它工作得很好:)

再次感謝你們的努力幫助:)

3

我發現你的符號高度可疑。不正確的損壞。你怎麼得到的?是從哪裏複製&粘貼?你試圖破解它嗎? 10FileHandleF8ileType應該是10FileHandle8FileType。然後它變成一個有效的符號Gdsii::GdsParser::GdsParser(char const*, SoftJin::FileHandle::FileType, boost::function >)

+0

是的,你對10FileHandle8FileType是正確的,我編輯它。 是的,這是GDSParser類中的一個函數,我給了它正確的參數。在正常的C++項目中,它工作正常,但是當我在DLL中使用它時,它給了我那個錯誤:( – MohamedMansour

+0

你是什麼意思「編輯它」?所以它是否正確作爲SO文件中的符號? –

+0

是的,它是10FileHandle8FileType,因爲你說的 – MohamedMansour