- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
所以首先我会说我已经查看了很多地方都没有成功。
这个 PDF 是我开始的地方:
http://curl.haxx.se/libcurl/c/visual_studio.pdf
它似乎过时了,并且不包含静态链接库的说明。或者至少,我已经尝试按照所有说明进行操作,但没有成功。
我已经尝试在
中找到以下答案 Installing LibCurl on Visual Studio 2010
error LNK2019: unresolved external symbol libcurl Visual studio
Building libcurl library in Visual Studio 2008
和其他领域,但没有取得任何进展。
我还要说,无论怎么想,我都不是 Windows 用户。话虽如此,我将列出我到目前为止所做的事情。
我正在移植我在 Unix 环境中制作的应用程序,特别是 OSX。除了使用 libcurl 之外,我取得了很多进步。我需要静态链接 LibCurl,以便可以根据需要将 Visual Studio 构建的可执行文件移动到其他 Windows 设备,而无需 libcurl 或 MySQL(我也在静态链接)的 dll。
无论如何,在这个存储库的慷慨帮助下:
https://github.com/blackrosezy/build-libcurl-windows
我能够在我的 Windows 设备上构建 libcurl。在我找到这个存储库之前,这是一个艰难的过程。现在我有一个 lib 和一个 include 文件夹。在 lib 文件夹中,有用于 dll 和静态构建的发布和调试文件夹。在静态发布文件夹中,我只有 libcurl_a.lib。在 dll-release 文件夹中,我有 libcurl.dll、libcurl.lib 和 libcurl.pdb。
当从 dll-release
文件夹动态链接时,我已经成功构建了程序。但是,当我尝试从 static-release 文件夹静态链接时,我收到 11 个左右的链接器错误。
我还包含了 "libcurl_a.lib"
、"wldap32.lib"
、"ws2_32.lib"
、"winmm.lib"
、"libeay32.lib"
和 "ssleay32.lib"
作为依赖项。
除此之外,我还使用 NuGet 获取了 libssh2.1.4.3.1
、openssl.1.0.1.21
、zlib.1.2.8.1
以及所有这些的 redist 版本。我在我的库目录中也包含了以下路径:
path_to_libssh\build\native\lib\v110\Win32\Release\static\cdecl\<br>
path_to_openssl\build\native\lib\v110\Win32\Release\static\cdecl\<br>
path_to_zlib\build\native\lib\v110\Win32\Release\static\cdecl\<br>
我还将这些文件夹中的 /include/
路径放入我的包含目录列表中。
在我的预处理器定义中,我有 "CURL_STATICLIB"
。
然而,尽管我从多个来源采取了所有这些步骤,包括本网站上的一些很好的答案,以及 PDF 和 LibCurl 网站上的一些答案,但我仍然遇到这些链接器错误。
例如,我认为其中一个错误具有轻微的指示性(抱歉,我无法从 VS2013 中复制并粘贴所有这些我能分辨的错误)说:
"error LNK2019: unresolved external symbol curl_easy_setopt referenced in function 'public:__cdecl Curler::Curler(char*)'(??0Curler@@QEAA@PEAD@Z)"
所有这些错误的布局都相似,指向某种类型的 __cdecl Curler
函数,错误代码为 LNK2019。
无论如何,我的问题基本上是:我做错了什么?如果这是一个模糊的问题,或者如果您觉得这是重复的,我很抱歉。但我可以向你保证,我已经查看了大量的 Stack Overflow 问题列表和互联网的其他领域,但都没有成功,我开始感到非常迷茫。似乎对很多其他人有用的东西我就是无法开始工作。我认为很大一部分问题是我对 Windows 的陌生。如果有任何其他信息我可以提供以帮助您帮助我,那么我会很乐意提供。我真的很感激你能给我的任何帮助。谢谢。
最佳答案
首先感谢编辑我帖子的用户Pawan;这是我的第一篇文章,他帮助它达到了社区的审美标准,所以我知道以后该怎么做。
无论如何,我想我已经解决了我的问题。这可能有点边缘情况,但无论如何它对我有用。
一段时间后,我决定使用 Visual Studio 为 Win64 构建 libcurl。为此,我从这个有用的存储库中获取了代码:
https://github.com/bagder/curl
我克隆了它,并导航到该目录。然后我运行了以下命令(这是在 Powershell 中,所以我使用了 unix-esque 命令,但我没有为此使用 MinGW):
mkdir build
cd build
cmake .. -G "Visual Studio 12 2013 Win64"
这构建了一个我可以在 Visual Studio 2013 中打开的 Visual Studio 解决方案。在 Visual Studio 中,我去了
Project Properties -> C/C++ -> Code Generation
并将Runtime Library
选项切换为"Multi-threaded (/MT)"
然后我构建了项目,它在以下路径中输出了以下文件:
path_to_pulled_code\build\lib\Release\libcurl.dll
path_to_pulled_code\build\lib\Release\libcurl_imp.exp
path_to_pulled_code\build\lib\Release\libcurl_imp.lib
所以,现在我有了我需要的 lib 文件。现在,在:
Project Properties -> Linker -> Input
我将 "libcurl_imp.lib"
和 "ws2_32.lib"
放在 Additional Dependencies
下。
正如我之前所说,我确保在 Preprocessor Definitions
中有 "CURL_STATICLIB"
。我还将此项目的 Runtime Library
切换为 "Multi-threaded (/MT)"
。
毕竟,好了,编译成功了!出于某种原因,我需要复制 libcurl.dll
,上述 Visual Studio 构建的 bagder 的 repo 将其复制到我的可执行路径中,以便解决方案真正起作用。但它似乎至少现在起作用了!
谢谢大家。希望这个答案能帮助其他像我一样偶然发现这个问题的人。
关于c++ - Visual Studio 2013 中的 LibCurl 静态链接器错误,即使在包含必要的依赖项之后也是如此,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705338/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!