我正在尝试制作一个小型C ++程序,它可以检索网页并进行一些操作。我希望cURL
获取我网站的内容。我下载了libcurl。
我的IDE是Code :: Blocks。 我已将以下参数添加到我的项目构建选项中:
运行良好,但仅限于IDE。当我尝试从explorer.exe运行我的可执行文件时,我收到一条消息,说我因为缺少libcurl.dll
而无法运行程序。如何解决这个问题?
我的编译器是MinGW。
答案 0 :(得分:2)
对此的解释是C :: B用于在IDE中运行程序的工具,
cb_console_runner.exe
,“帮助”添加您指定的链接器搜索目录
项目到运行时DLL搜索顺序。
因此,您已将curl-windows\bin
指定为链接器搜索目录,
这就是libcurl.dll
的位置,您的程序在cb_console_runner.exe
运行时找到它。
但由于curl-windows\bin
不在 Windows DLL搜索顺序中,因此找不到DLL
直接运行可执行文件时。
验证这一点: -
curl-windows\bin
在第二次运行时,您将收到丢失的libcurl.dll
错误。
为了能够直接运行您的程序,必须找到libcurl.dll
Windows DLL search order。
顺便说一句,将libcurl.a
和libcurldll.a
链接起来毫无意义。
如果您要使用DLL,请不要链接libcurl.a
。
事实上,只要您链接libcurldll.a
,请将curl-windows\bin
指定为
链接器搜索目录是没有意义的,因为你需要在构建时,它的存在
只会导致运行时混淆您的问题。
答案 1 :(得分:1)
您需要将cURL dll与可执行程序一起分发(部署),或者您必须确保Windows将在dll搜索路径中找到该dll。通常,找到excutable的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关。 欢迎来到DLL地狱!