无法在动态链接库libintl-8.dll中找到过程入口点__printf__

时间:2013-08-21 16:54:00

标签: objective-c mingw gnustep

使用GNUstep / MinGW编译Objective-C时出现以下错误:

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

文件的Exports表
[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
         ...   ...

4 个答案:

答案 0 :(得分:8)

在我的系统上,我通过重新排序系统PATH envvar来解决此问题,以便在c:\MinGW\bin之前显示%GTK_BASEPATH%\bin。这样,即使GCC从libintl-8.dll而不是as.exe启动,也会找到c:\MinGW\bin\mingw32\bin想要的正确c:\MinGW\bin。否则,它会尝试链接一些GTK + SDK附带的那个,它没有所有必需的符号,我假设。此外,在我的情况下,对话框抱怨as.exe在动态链接器决定尝试使用的libintl-8.dll出现故障时错过了符号。

太糟糕了,没有更多可通过mingw-get安装的软件包实际上共享共享对象,而不是每个SDK都附带自己的安装程序以及它自己的DLL不兼容的变种......

答案 1 :(得分:6)

我做同样的事情。将c:\mingw\mwingw32重命名为c:\mingw\mingw32old即可 (Windows XP)。在Windows 7 64位我没有遇到这个问题。

答案 2 :(得分:4)

我遇到了类似的问题。在我的情况下,错误出现在对话框中,而不是在编译器的控制台输出中。这表明它实际上是执行编译器的问题,而不是编译。尝试将-v添加到gcc命令以查看其执行的子命令。在我的情况下,尝试从as.exe而不是MinGW/mingw32/bin执行MinGW/bin是一个问题(libintl DLL在前一个位置不存在)。我重命名了MinGW/mingw32文件夹以防止它被找到并且编译成功。不知道为什么它会在这个位置看。

最终我通过全新安装MinGW解决了这个问题。

答案 3 :(得分: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
        .   ...