2013-08-21 60 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

相关问题