4

使用 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 文件的导出表

[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

4 回答 4

10

在我的系统上,我通过重新排序我的系统PATHenvvar 来解决这个问题,以便c:\MinGW\bin%GTK_BASEPATH%\bin. 这样,即使 GCClibintl-8.dll从而不是. 否则,它会尝试链接一些 GTK+ SDK 附带的那个,它没有所有必需的符号,我想。此外,在我的情况下,当动态链接器决定尝试使用的真正有问题时,对话框抱怨缺少符号。as.exec:\MinGW\bin\mingw32\binc:\MinGW\binas.exelibintl-8.dll

太糟糕了,没有更多的软件包可以通过mingw-get实际共享共享对象来安装,而不是每个 SDK 都提供自己的安装程序以及自己不兼容的 DLL 变体……</p>

于 2015-03-23T15:22:19.270 回答
7

我做同样的事情。重命名c:\mingw\mwingw32c:\mingw\mingw32old它可以工作(Windows XP)。在 Windows 7 64 位中我没有遇到这个问题。

于 2013-11-24T10:11:15.210 回答
4

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

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

于 2013-10-02T01:05:12.303 回答
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
        .   ...
于 2013-08-22T19:20:27.367 回答