2012-05-08 14 views
0

我得到一個未定義的符號異常,實際執行的方法。這對我來說沒有意義。這裏是日誌的示例:運行時C++「未定義符號」異常

/src/CustomerReturnProcessUtils/labelPrintUtils/CreturnLabelPrinter.cpp:402(空)():CreturnLabelPrinter:[InitializeZebraPrint]成功連接到插座 /阿波羅/ ENV/CustomerReturnUIServiceUS/bin中/ CustomerReturnUIService :符號查找錯誤:/阿波羅/ ENV/CustomerReturnUIServiceUS /斌/ CustomerReturnUIService:未定義的符號:_ZN19CreturnLabelPrinter10PrintLabelESsSsiiiSsbSs

「成功連接到插座」是由內而外CreturnLabelPrinter的方法調用記錄:: PrintLabel ......我怎麼能得到一個未定義的符號例外呢?這是一種非靜態方法。它的代碼是不相關的(我不能在這裏發佈)......我只是想知道這會發生什麼情況下。在編譯和鏈接這些模塊時,我還沒有看到任何問題。調用方法位於與「未定義符號」不同的庫中。

+0

你看過「CreturnLabelPrinter.cpp」第402行的代碼,看看它在做什麼?至少在我讀到的時候,未定義的符號是'ZN19CreturnLabelPrinter10PrintLabelESsSsiiiSsbSs'(它看起來更像是一個錯位的名字,所以它可能類似於'CReturnLablePrinter :: PrintLabel'(或者很可能是更復雜的東西,但是你會得到一般的想法) –

回答

0

當我有2個版本的圖書館時,發生在我身上,而我正在連接錯誤的圖書館。還有C++ FILT示出:

C++ FILT _ZN19CreturnLabelPrinter10PrintLabelESsSsiiiSsbSsCreturnLabelPrinter :: PrintLabel(性病:: basic_string的,標準::分配器>,的std :: basic_string的,標準::分配器>,INT,INT,INT,標準: :basic_string,std :: allocator>,bool,std :: basic_string,std :: allocator>)

這有一個巨大的參數列表,你檢查過它們嗎?

+0

我不認爲這是一個庫版本問題 - 這是我添加到庫中的一個全新的源文件,所以如果我使用了錯誤的版本,它根本無法工作,但是我還是要仔細檢查參數 – alexD

+0

我還有一個新的源文件(實際上是一個應用程序),它與使用調試標誌編譯的庫鏈接,所以應用程序編譯過程中,執行失敗就像你描述的一樣。 – tmaric