MinGW“找不到 libiconv 的入口点...”

9

我有一个标准的C库,在Mac OS X上使用gcc编译正常。

我检查了可用于Windows的C编译器,选择了MinGW,原因如下:

  • 微软的工具不支持C99
  • Cygwin等增加了我不想要的posix仿真的额外复杂性
  • 无法使lcc-win32工作

但是,当我尝试构建我的库时,出现了这个问题:

enter image description here

这些都看起来非常古老,而且几乎找不到任何好的在线资源。

任何帮助都将不胜感激。

谢谢。

编辑:

无论我要构建什么,即使我只制作一个函数将两个数字相加的单个文件。它会崩溃。似乎与源代码或传递给gcc的选项无关。我认为这是我的MinGW设置问题,而不是我的项目问题。


当您正在构建DLL时,会产生此错误。 - David Heffernan
无论我尝试构建什么,都会崩溃。即使我只是创建一个添加两个数字的函数的单个文件,它也会崩溃。似乎与源代码或传递给gcc的选项完全无关。 - Steve
1
显然你的mingw安装出了问题。你是怎么安装的? - David Heffernan
顺便说一下,我在MinGW安装中的as.exe不依赖于libiconv-2.dll(或任何其他libiconv.dll)。 - Michael Burr
我放弃了,通过LCC解决了我的问题...尽管有一些我担心的事情,但它似乎正在做我需要的事情。 - Steve
显示剩余2条评论
2个回答

27
在包含“libiconv-2.dll”的任何其他目录之前,确保在路径中具有C:\MinGW\bin。显然,某些MinGW发行版中的as.exe依赖于该DLL,将其旧版本放在路径中的某个位置(例如GnuWin32工具)将导致as.exe选择不具有其正在寻找的入口点的旧版本。
参见:http://sourceforge.net/tracker/index.php?func=detail&aid=3375870&group_id=200665&atid=974439 注意-您应该能够使用\MinGW\bin中的更新版本替换较旧的libiconv-2.dll - DLL的命名意味着它向后兼容旧版本(即,不依赖于新输出的旧软件应继续工作)。但是,我没有测试过,因此如果您决定尝试用MinGW安装中的一个替换冲突的DLL,请务必备份。

2
有趣。我确实安装了GnuWin32。让我试试这个,然后回答你。我还在我的“PATH”中有C:\MinGW\bin,但我相信它在GnuWin32之后…所以如果与GnuWin32存在冲突,我相信系统会首先找到GnuWin32的版本。这绝对看起来像是出了问题的合理解释。 - Steve
太棒了。我希望我能给你更多的赞。这正是问题所在(与GnuWin32冲突)。 - Steve
谢谢,伙计。在调查问题时,我发现如果我当前的目录是\mingw\bin,那么我可以通过调用gcc来编译东西。在这种情况下,as.exe很高兴。但是在任何其他pwd中,它都不行。感谢您的帮助。我一直在研究某种不匹配的dll问题,而不仅仅是as.exe没有正确启动。干杯。 - RichColours
我刚刚在一台从未安装过编译器的机器上进行了MinGW的全新安装,但文件libiconv-2.dll在我的系统中无处可寻。我完全无法使用我的安装。还有其他人遇到这个问题吗?我以前在使用新的安装程序和管理器时从未遇到这个问题。 - LB--
杰出的答案!! - thonnor

2

除了确保在其他任何东西之前将C:\MinGW\bin添加到您的PATH中,您还应该重新启动计算机(或可能注销/登录),以确保您的PATH实际上已更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接