web-dev-qa-db-ja.com

LibCurlをVisual Studio 2013で動作させる

LibCurlをVisual Studio 2013で動作させるのに問題があります。現在のバージョン(curl-7.33.0)をダウンロードし、このサイトで見つけた指示に従ってみました: sing LibCurl with Visual 201

しかし、ダウンロードしたフォルダーにcurllib.libが見つかりません。そして、私はまだエラーが発生しています: enter image description here

インターネットで詳細なヘルプを検索した後。これらのエラーメッセージが表示されます。 libcurl.libへのリンクに問題があるように見えますか?

enter image description here

これは私が設定したものです: enter image description here


enter image description here

/ libの中にはlibcurl.liblibcurl.dllがあります


[〜#〜] update [〜#〜]

Win32 MSVCのこのリリースをダウンロードしました。 http://curl.haxx.se/download.html#Win32 libcurlライブラリを追加し、正常にコンパイルした後、次のエラーメッセージが表示されます。

 The application was unable to start correctly (0xc000007b). Click OK to close the application.

実行しようとしているサンプルコードを次に示します。

#include <iostream>
#include <stdio.h> 
#include <curl/curl.h> 


int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
        res = curl_easy_perform(curl);

        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    return 0;
}

最終更新

LibCurlがVisual Studio 2013で動作するようになったと思います。永続性ftw!これらのエラーメッセージを解決するために何時間も費やした後、私はすべてが今うまく機能していると言うことに少しlittleしています。そのため、LibCurlをVisual Studio 2013で動作させるための明確で簡潔な指示を得るために、この質問に賞金をかけています。

これは私がそれを機能させるためにしたことです:

  1. まず、こちらからWin32 MSVCパッケージをダウンロードします。 http://curl.haxx.se/download.html#Win32 これらの手順のために、C:\ LibCurlにダウンロードしたとします。

  2. Visual Studioで新しいプロジェクトを開始します。プロジェクト|プロジェクトのプロパティ| VC++ディレクトリ|ディレクトリを含める|に移動しますダウンロードしたパッケージ内のincludeディレクトリにパスを追加します。 (C:\ LibCurl\include)

  3. 次に、プロジェクト|プロジェクトのプロパティ|リンカー|全般|追加のライブラリディレクトリ|に移動します。 libディレクトリにパスを追加します。 (curllib.dllがある場所)

  4. 次に、プロジェクト|プロジェクトのプロパティ|リンカー|入力|追加の依存関係|に移動します。そしてcurllib.libを追加します

  5. テストプログラムをコンパイルすると、libsasl.dllが見つからないというメッセージが表示される可能性があります。このファイルをダウンロードして、ビルドと同じディレクトリに配置する必要があります。 7-Zipを使用してlibsasl.dllOpenLDAP for Windowsから抽出しました。 Windows用OpenLDAP

これは、上記のテストコードの結果です。 enter image description here

50
Quaxton Hale

私はコメントでそれを言うでしょうが、私はポイントに欠けています。 .dllをプログラム実行カタログにコピーする必要はありません。 プロジェクト|プロパティ|構成プロパティに移動し、環境行:PATH=$(ExecutablePath)$(LocalDebuggerEnvironment)に書き込みます。

今後、プロジェクト|プロジェクトプロパティ| VC++ディレクトリ|バイナリで言及したカタログのすべての.dllは、コピーせずに使用できるようになります。

残りはあなたが書いたとおりです。

12
Michał

これらの指示の多くは、curl用の win32-ssl-devel-msvc パッケージ、はもう存在しません

次の手順では、onlyを使用してlibcurlをビルドできます。

  • Visual Studio 2013
  • curl汎用ソースtarball(curl 7.44.0でテスト済み)。

A. libcurl静的ライブラリを構築する

  1. 最新のcurl generic source を次からダウンロードします。 http://curl.haxx.se/latest.cgi?curl=tar.gz
  2. ソースをローカルディレクトリに抽出します(_C:\libcurl_を使用します)
  3. コマンドプロンプトを開く
  4. "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" VC環境変数を初期化するには(必要に応じてVS 2013インストールディレクトリを調整します))
  5. _cd C:\libcurl\winbuild_
  6. _nmake /f Makefile.vc mode=static VC=12_
  7. ビルドは_C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl_に表示されるはずです

B. Visual Studioでのlibcurlに対するリンク

  1. Visual Studioで、ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]をクリックします
  2. 構成プロパティ> C/C++>一般>追加インクルードディレクトリ:_C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include_を追加
  3. 構成プロパティ> C/C++>プリプロセッサー>プリプロセッサー定義:add _CURL_STATICLIB_
  4. 構成プロパティ>リンカ>一般>追加のライブラリディレクトリ:add _C:\libcurl\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib_
  5. 構成プロパティ>リンカ>入力>追加の依存関係:_libcurl_a.lib_を追加

C.プロジェクトからlibcurlを呼び出す

次のサンプルは、libcurlの呼び出しを示しています。

_#include "stdafx.h"

#include <curl/curl.h>

void main(int argc, char* argv[])
{
    CURL *curl = curl_easy_init();
    if (curl) printf("curl_easy_init() succeeded!\n"); 
    else fprintf(stderr, "Error calling curl_easy_init().\n");
}
_
70
mtlynch

私が見つけた最も簡単な方法は、最初にnugetがインストールされていることを確認することです。

http://www.nuget.org/

次に、プロジェクトを作成します。

次に http://www.nuget.org/packages/curl/ に移動し、指示に従ってパッケージマネージャーコンソールに移動し、PM> Install-Package curl

その後、プロジェクトディレクトリでパッケージディレクトリを検索すると、インクルードファイルとライブラリファイルが見つかります。 120ではなくVisual Studio 110のバージョンがありますが、libcurlはVisual Studio 2013で使用できるCライブラリであることに注意してください。プロジェクトプロパティのVisual C++ディレクトリの下にincludeディレクトリとlibディレクトリが指定されていることを確認してください。

リンカへの追加入力として次のファイルがあることを確認してくださいlibcurl.lib;libeay32.lib;ssleay32.lib;Ws2_32.lib;libssh2.lib;zlib.lib;wldap32.lib;

12
John Bandela

Curl/libcurlを使用する別の方法は、 CMake v2.8.12 +でビルドすることです(gitが既にコンピューターにインストールされていると仮定します)

Cmdウィンドウを開き、dirを適切なフォルダーに変更します

git clone https://github.com/bagder/curl.git
mkdir msbuild
cd msbuild
cmake ..\curl -G"Visual Studio 12 Win64" -DCMAKE_INSTALL_PREFIX=C:\curl.vc12 -DCURL_STATICLIB=ON
< ... lots of output here ... >

生成されたCURL.slnをVisual Studioで開き、ビルドします。

例で使用するCMakeオプション

-Gは、ビルドジェネレーターを選択します。この場合、Visual Studio 2013 64ビットターゲット

-DCMAKE_INSTALL_PREFIX-ターゲットをインストールするルートフォルダーを提供します

-DCURL_STATICLIB = ON-静的ライブラリのビルドを生成します

インストールターゲットをビルドすると、C:\ curl.vc12にbin/include/libフォルダーが見つかります。

ソリューションへのこれらのパスを提供し、curl libを使用してコードをビルドします。

10
Sergei Nikulov

私はVS2012でゼロからそれをやろうとしました(私は2013を持っていません)、それは完璧に動作します。

  • バージョン7.19.3を http://curl.haxx.se/latest.cgi?curl=win32-ssl-devel-msvc からダウンロードしたのは、VSで使用可能な唯一のバージョンだからです。
  • チュートリアルで彼が言ったcurlディレクトリではなく、includeディレクトリを追加しました。
  • 小さな toy project を問題なくコンパイルしました。

だから、私はあなたの問題が何であるか分かりませんが、:

  • 必ず適切なアーカイブをダウンロードしてください。
  • スペースのないパスにcURLフォルダーを配置してください。
  • VS2012以前を使用している人を知っている場合は、同じincludeとlibを使用してコードを試し、動作するかどうかを確認してください。
  • コードの最小限の動作例を貼り付けて、テストできるようにします。
5
Nil

これは少し遅いですが、まだ問題を抱えている人にとっては、この方法は私にとって最もうまくいきました:

  1. VSをシステムPATHに追加します。
    たとえば:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
  2. http://curl.haxx.se/download.htmlから現在のcurl-X.Zipをダウンロードして解凍します。
  3. curl-X/winbuildでコマンドラインを開きます。
  4. vcvars32.batを呼び出します。
  5. nmake /f Makefile.vc mode=static VC=12を呼び出します。
  6. curl-X/builds/libcurl-XXXに移動します。

そこには、インクルードとlibcurl_a.libがあります。このライブラリは私には問題なく動作します。
このライブラリを使用してコードをコンパイルするときに、-DCURL_STATICLIBを定義することを忘れないでください。

4
David

Visual Studio 2017の場合、 link の手順がうまくいきました。リンクの有効期限が切れた場合、またはGitHubからクローンを作成する代わりにlibcurl Zipファイルをダウンロードするユーザー向けに、ここで手順を書き留めます。

  1. “C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat” x64を使用して環境変数を設定します。コマンドが成功すると、Environment initialized for 'x64'というメッセージが表示されます

  2. download libcurl から圧縮されたlibcurlファイルをダウンロードして解凍します。 .Zipファイルを使用しました。

  3. cdを、抽出したlibcurlフォルダー内のwinbuildディレクトリーに入れます。
  4. nmake /f Makefile.vc mode=dll MACHINE=x64を実行してビルドします。ビルドオプションの詳細については、winbuildフォルダーのBUILD.WINDOWSテキストファイルを参照してください。
  5. 1つ上のディレクトリレベルに移動し、cdbuildsフォルダーに移動して、コンパイルされたファイルを見つけます。

ではごきげんよう!

3
swdon

最新のパッケージを使用して、VC++で動作させる簡単な方法を見つけました。基本的に、Visual Studioでのlibcurlの使用の手順に従いました。 libcurlとVC++は、この命令では非常に古いものです。

まずダウンロードページでZipファイルをダウンロードします https://curl.haxx.se/download.html Zipパッケージは https://curl.haxx.se/download/curl- 7.50.1.Zip

Projects-> Windows\VC10(またはVCのバージョン)\ lib\libcurl.slnに移動し、VC++でプロジェクトを開きます。

DLL Release。DLLデバッグはVC++では機能しません。

Build\Win32\VC10\DLL Releaseに移動すると、前の手順で生成されたlibおよびdllファイルを見つけることができます。

Includeフォルダーとlibフォルダーを使用して、新しいフォルダーを作成します。 libcurb.dllとlibcurb.libをDLL Releaseフォルダーにあるnew\libにコピーします。curl-7.50.1\ includeのすべてをnew\includeフォルダーにコピーします。

C++プロパティ->構成プロパティ-> VC++ディレクトリ、include \ディレクトリにnew\includeを追加、ライブラリディレクトリにnew\libを追加。 new\libをリンカーに追加->一般->追加のライブラリディレクトリ、libcurl.libをリンカーに追加->入力->追加の依存関係

実行可能ファイルと同じフォルダにdllファイルを配置する必要があるようです。

動作するはずです。

2
Daisy

問題は、デフォルトのVS2013プラットフォームツールのターゲットがNuGetパッケージに設定されていないことです。これが、VS2012では機能するがVS2013では機能しない理由です。手動で置換ターゲットファイルを作成しました。手順とダウンロード:

https://github.com/evoskuil/curl-nuget-targets

2
evoskuil

Curl v7.37.0ソースコードをダウンロードし、提供されているVisual Studioプロジェクトファイルを使用します。

過去数週間、オリジナルのVC6ファイルをベースにした自分の個人プロジェクトファイルを研磨し、リポジトリに追加しました。

DLLおよび静的ライブラリは、Win32およびx64構成の両方でOpenSSLおよびWindows SSPI/SChannelをサポートしてビルドされます。

2
Steve Holme