使用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
... ...
答案 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
. ...