2013-08-21 99 views
3

在編譯的Objective-C與GNUstep的/ MinGW的我得到以下錯誤:程序的入口點__printf__不能設在動態鏈接庫的libintl-8.dll

The procedure entry point __printf__ could not be located in the dynamic link library libintl-8.dll. 

的Windows 7/64位。 libintl-8.dll上的文件版本是0.18.1。

編譯器是否使用正確的文件?

編輯:這裏是位於C文件的導出表:\ MinGW的\ BIN \的libintl-8.dll

[Ordinal/Name Pointer] Table 
     [ 0] __printf__ 
     [ 1] _get_output_format 
     [ 2] _nl_expand_alias 
     [ 3] _nl_explode_name 
     [ 4] _nl_find_domain 
     [ 5] _nl_find_msg 
     [ 6] _nl_language_preferences_default 
     [ 7] _nl_load_domain 
     ... ... 

回答

0

這裏怎麼是應該的。

的libintl-8.dll 0.8.1

Export Table: 
    Name:       libintl-8.dll 
    Time Date Stamp:    0x4EA19844 (21.10.2011 17:05:24) 
    Version:      0.00 
    Ordinal Base:     1 
    Number of Functions:   84 
    Number of Names:    84 

    Ordinal Entry Point Name 
     1 0x00009124 __printf__ 
     2 0x000105B8 _get_output_format 
     . ... 
+0

感謝您的答覆。但是知道應該怎麼做並不能告訴我爲什麼包含在下載/安裝包中的DLL不是編譯器想要的或者我應該做的。 –

+0

這聽起來很瘋狂,但我注意到,我的objdump序列是基於零的,而你的不是。有沒有可能存在實際的差異,還是工具顯示列表的問題? –

+0

@JoeDavis:嘗試,你會看到:[libintl-8.dll](http://moskito-x.de/stack/libintl-8.dll) –

4

我經歷了類似的問題。在我的情況下,錯誤出現在對話框中,而不是編譯器的控制檯輸出中。這表明它實際上是編譯器執行的問題,而不是編譯。嘗試將-v添加到gcc命令以查看其執行的子命令。在我的情況下,它試圖從MinGW/mingw32/bin執行as.exe而不是MinGW/bin(libintl DLL不存在於以前的位置)時出現問題。我重命名了MinGW/mingw32文件夾以防止它被發現並且編譯成功。不知道它爲什麼在這個位置看。

最終我通過重新安裝MinGW來解決這個問題。

6

我做同樣的事情。將c:\mingw\mwingw32重命名爲c:\mingw\mingw32old,它的工作原理爲 (Windows XP)。在Windows 7 64位我沒有這個問題。

+0

知道爲什麼這是必要的或者如果有更優雅的修復程序可用,這將是可愛的。 –

6

在我的系統上,我通過對我的系統PATH envvar重新排序來解決這個問題,以便在%GTK_BASEPATH%\bin之前顯示c:\MinGW\bin。這樣,即使當GCC從c:\MinGW\bin\mingw32\bin而不是c:\MinGW\bin發現as.exe想要找到的正確libintl-8.dll。否則,它會嘗試鏈接到一些GTK + SDK附帶的版本,但我沒有提供所有必需的符號。另外,就我而言,對話框中抱怨as.exe錯過了動態鏈接器決定嘗試使用的libintl-8.dll錯誤的符號。

太糟糕了,有沒有通過mingw-get實際上共享共享對象,而不是每個SDK與DLL文件的自己的不兼容的變種一起推出其自己的安裝程序安裝多個包...

+0

你是一個天才,已經失去了2個小時解決這個問題! – teMkaa

相關問題