Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
120 views
in Technique[技术] by (71.8m points)

c++ - cURL with Visual Studio 2013

So i have came along with cURL as a very nice library and working very fine in OSX. But on windows now i have got big troubles with getting ready with this library. I googled now for about 2 days and tried over a dozen (in detail) different ways to get this ready. Without any success at all.

Here are some ways I basically tried:

  1. The direct Download: The problem here already starts with the right download. The official download page is pretty confusing, so i considered this "cURL Download Wizard" > "libcurl development" which gives me a version, that i should be able to include into any project. But how exactly to include it? In ANY instructions out there it leads me to directories i dont even have. Almost always this "curllib.lib" is mentioned. I downloaded about 6 different versions on that downloadpage, in none of them there is this file. (See for example this instruction)
  2. Git + CMake: As a solution on the aboves Link there is suggested to use git clone on this. I did all the instructions there and also get the Projects generated with just warnings. But here it says as well:
    After building install target, your will find bin/include/lib folders in C:curl.vc12
    Well, i did not really get his point of "build install target", i just build the entire project map as it comes. Compiles fine (115 succeeded, 0 failed, 2 skipped). But now C:curl.vc12 is not there. What do i have to pre-setup before compiling this?
  3. NuGet: The idea comes from the link in point (1) again, a different solution with NuGet.
    With Successfully added 'curl 7.30.0.2' to test. it also seemed nice, but compiling simple.c leads to a bunch of unresolved external symbol linker errors. But a solution is provided:
    Make sure the include directory and lib directory are specified under the Visual C++ directories in project properties.
    So in Project > Properties > VC++ Properties > "Include Directories" and
    Project > Properties > VC++ Properties > "Library Directories"
    as well as in Project > C/C++ > General > "Additional Include Directories" and in Project > Linker > General > "Additional Library Directories" I desperately added the packages path from my project folder.
    As mentioned in the instructions, I added libcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib; to Project > Linker > Input > "Additional Dependencies".
    All that done, the unresolved external symbol errors are gone! Therefore I get just one error saying cannot open file 'libcurl.lib'. What can I do here?

I am pretty new to all that. But I am trying really hard now to get this finally to work. So what can I do?
I work with Visual Studio 2013 Community Edition. The currently most recent version of cURL is 7.42.1. Any help is highly welcome!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Had problems myself, finally got it working now. I downloaded curl-7.42.1.zip from the official website. Within the archive you'll find the source code and winbuild/BUILD.WINDOWS.txt, which basically contains the instructions I followed. I'll assume that it has been unzipped to C:curl-7.42.1.

Open the Visual Studio command prompt located at

C:Program Files (x86)Microsoft Visual Studio 12.0Common7ToolsShortcuts

This automatically sets the environment variables needed to use Visual Studio tools like the compiler. Then move to the winbuild directory and call

nmake /f Makefile.vc mode=dll

as described in the text file I mentioned above.

That will create the directory

C:curl-7.42.1uildslibcurl-vc-x86-release-dll-ipv6-sspi-winssl

containing libcurl.dll, libcurl.lib and the necessary header files. Let's rename it to C:curl-7.42.1uilds elease :'D

  1. Then open your project.
  2. Open your project's properties.
  3. Make sure you choose Release as configuration (top left corner)!
  4. Navigate to VC++ Directories > Include directories and add C:curl-7.42.1uilds eleaseinclude
  5. Add C:curl-7.42.1uilds eleaselib to VC++ Directories > Library directories.
  6. Go to Linker > Input > Additional Dependencies and add libcurl.lib.
  7. Finally copy C:curl-7.42.1uilds eleaseinlibcurl.dll to your project folder.

That should do the trick! :D If you want to use cURL in debug mode, you can do almost the same, recompile using nmake /f Makefile.vc mode=dll debug=yes, go to your project's properties, add the newly created directory paths (changing libcurl.lib to libcurl_debug.lib) and you should be done.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...