用于部署使用外部库的应用程序的正确生成选项 我试图制作一个小C++程序,它能修复网页并进行一些操作。我想cURL获取我网站的内容。我下载了

用于部署使用外部库的应用程序的正确生成选项 我试图制作一个小C++程序,它能修复网页并进行一些操作。我想cURL获取我网站的内容。我下载了,c++,linker,codeblocks,C++,Linker,Codeblocks,我的IDE是Code::Blocks。 我已将以下参数添加到我的项目构建选项中: 它运行良好,但只在IDE中运行。当我试图从explorer.exe运行我的可执行文件时,我收到一条消息,说我无法运行程序,因为缺少libcurl.dll。如何解决这个问题 我的编译器是MinGW。您需要将cURL dll与可执行程序一起分发(部署),或者您必须以某种方式确保Windows将在dll搜索路径中找到该dll。通常,找到可执行文件的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关

我的IDE是Code::Blocks。 我已将以下参数添加到我的项目构建选项中:

它运行良好,但只在IDE中运行。当我试图从explorer.exe运行我的可执行文件时,我收到一条消息,说我无法运行程序,因为缺少
libcurl.dll
。如何解决这个问题

我的编译器是MinGW。

您需要将cURL dll与可执行程序一起分发(部署),或者您必须以某种方式确保Windows将在dll搜索路径中找到该dll。通常,找到可执行文件的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关。 欢迎来到地狱

您需要将cURL dll与可执行程序一起分发(部署),或者您必须确保Windows会在dll搜索路径中找到该dll。通常,找到可执行文件的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关。 欢迎来到地狱

您需要将cURL dll与可执行程序一起分发(部署),或者您必须确保Windows会在dll搜索路径中找到该dll。通常,找到可执行文件的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关。 欢迎来到地狱

您需要将cURL dll与可执行程序一起分发(部署),或者您必须确保Windows会在dll搜索路径中找到该dll。通常,找到可执行文件的目录和当前目录是dll搜索路径的一部分。这与您的开发环境和/或编译器无关。
欢迎来到地狱

对此的解释是C::B用来在IDE中运行程序的工具,
cb_console_runner.exe
,“helpfully”添加在 项目到运行时DLL搜索顺序

因此,由于您已将
curl windows\bin
指定为链接器搜索目录, 这就是
libcurl.dll
所在的位置,您的程序在通过
cb\u console\u runner.exe运行时会找到它。
但是由于
curl windows\bin
不在windows DLL搜索顺序中,因此找不到DLL 当您直接运行可执行文件时

要验证这一点,请执行以下操作:-

  • 成功构建您的项目
  • 在IDE中成功运行它
  • 从链接器搜索目录中临时删除
    curl windows\bin
  • 再次从IDE运行,无需重建
在第二次运行时,您将得到缺少的
libcurl.dll
错误

要能够直接运行程序,必须在中找到
libcurl.dll
这个

顺便说一句,链接
libcurl.a
libcurldll.a
对您来说是毫无意义的。 如果要使用DLL,请不要链接
libcurl.a

事实上,只要您链接
libcurldll.a
,将
curl windows\bin
指定为 链接器搜索目录是毫无意义的,因为在构建时您不需要任何东西,它也不存在
只会导致您的问题所涉及的运行时混乱

对此的解释是C::B用来在IDE中运行程序的工具,
cb_console_runner.exe
,“helpfully”添加在 项目到运行时DLL搜索顺序

因此,由于您已将
curl windows\bin
指定为链接器搜索目录, 这就是
libcurl.dll
所在的位置,您的程序在通过
cb\u console\u runner.exe运行时会找到它。
但是由于
curl windows\bin
不在windows DLL搜索顺序中,因此找不到DLL 当您直接运行可执行文件时

要验证这一点,请执行以下操作:-

  • 成功构建您的项目
  • 在IDE中成功运行它
  • 从链接器搜索目录中临时删除
    curl windows\bin
  • 再次从IDE运行,无需重建
在第二次运行时,您将得到缺少的
libcurl.dll
错误

要能够直接运行程序,必须在中找到
libcurl.dll
这个

顺便说一句,链接
libcurl.a
libcurldll.a
对您来说是毫无意义的。 如果要使用DLL,请不要链接
libcurl.a

事实上,只要您链接
libcurldll.a
,将
curl windows\bin
指定为 链接器搜索目录是毫无意义的,因为在构建时您不需要任何东西,它也不存在
只会导致您的问题所涉及的运行时混乱

对此的解释是C::B用来在IDE中运行程序的工具,
cb_console_runner.exe
,“helpfully”添加在 项目到运行时DLL搜索顺序

因此,由于您已将
curl windows\bin
指定为链接器搜索目录, 这就是
libcurl.dll
所在的位置,您的程序在通过
cb\u console\u runner.exe运行时会找到它。
但是由于
curl windows\bin
不在windows DLL搜索顺序中,因此找不到DLL 当您直接运行可执行文件时

要验证这一点,请执行以下操作:-

  • 成功构建您的项目
  • 在IDE中成功运行它
  • 从链接器搜索目录中临时删除
    curl windows\bin
  • 再次从IDE运行,无需重建
在第二次运行时,您将获得缺少的
libcurl.dll