Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 991
beshtaa Avatar asked May 17 '15 15:05

beshtaa


1 Answers

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.0\Common7\Tools\Shortcuts

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.1\builds\libcurl-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.1\builds\release :'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.1\builds\release\include
  5. Add C:\curl-7.42.1\builds\release\lib to VC++ Directories > Library directories.
  6. Go to Linker > Input > Additional Dependencies and add libcurl.lib.
  7. Finally copy C:\curl-7.42.1\builds\release\bin\libcurl.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.

like image 114
Jeinzi Avatar answered Sep 30 '22 12:09

Jeinzi