2011-12-06 64 views
0

我想靜態鏈接到FreePascal應用程序lua。除了這個之外,我已經修復了鏈接過程中的所有錯誤。 未定義的符號:__strtod鏈接錯誤:未定義的符號:___strtod

所有其他未定義的符號,我能夠通過libkernel32.a,從MinGW的編譯器,我使用的編譯,我鏈接liblualib.a libuser32.a和libmsvcr.a鏈接中代替使用dll。

我想這個靜態鏈接,而不是動態鏈接。那麼,有沒有人碰巧知道哪個.a lib文件___strtod被定義,或者知道我可以如何搜索並找到它。

據我所知這是一個C99函數,MinGW,GCC支持它。所以,我認爲它會出現在其中的一個lib(.a)文件中。

謝謝,

+1

'strtod'也在C89描述(具有相同的功能在C99)。 – pmg

回答

0

原來,我沒有回來,並回答了我的問題,當我得到它的工作。

我在網上搜索了C中的函數,然後使用MinGW將其編譯爲靜態庫。使用我創建的libstrtod.a文件,我可以將它靜態鏈接到由FreePascal編譯的程序中。

我自那時以來不得不放棄這個項目的來源,因爲它是在合同上,我會盡量記住做一個這樣的例子來分享。

感謝所有的回覆和建議。

待續...

0

它是C庫libc的一部分。但是我不知道你可以靜態鏈接到它。 (是否還有系統提供libc的靜態版本?)

Libc應該在C程序中默認鏈接。

+0

似乎cygwin有一個libc.a文件,我將它鏈接起來,但它不包含___strdot符號。 –

0

只需創建一個使用庫的靜態版本的make文件即可。 靜態庫通常比動態庫大得多。 你可以下載newlib並直接使用lua運行時編譯源代碼, 我猜測newlib可以和MinGW一起工作。

我希望這會有所幫助。