web-dev-qa-db-ja.com

libcurlを使用してプログラムをリンクするときの未解決のシンボル

私はこれがプログラミングの質問であることを知っていますが、自分が間違っていることを理解しようとしていらいらしています。

私はビジュアルスタジオ2010を使用しており、ここですべての手順を実行しました: http://curl.haxx.se/libcurl/c/visual_studio.pdf

私のソリューションをコンパイルしようとすると、このエラーが発生し続けます。

1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

ソース:

// LibCurl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#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;
}
32
Kyle

ライブラリが正常にリンクされていないようです。ライブラリー・ディレクトリーがlibcurl dllへの絶対パスを含むように設定されていることを確認してください。また、このライブラリが実際にプロジェクトに追加されていることを確認してください。

3

私はlibcurlの静的バージョンを使用しており、それにプログラムを適切にリンクするには、定義を追加する必要がありました。

CURL_STATICLIB

プロジェクトの構成を構築します。

85
stoiczek

CURL_STATICLIBの定義に加えて、私にとっては、次の依存関係(libcurl.libまたはlibcurld.libを含む)をリンクすることも必要でした。

  • Ws2_32.lib
  • Wldap32.lib
21
cdonts

私は同様の問題に遭遇しました-私がlibcurl.libの64ビットの場所を参照していることがわかりました。リンクディレクトリを32ビットの場所に変更し、プロジェクトを完全にコンパイルしました。

5
wayne

私も同じ問題を抱えていました。私は最終的にCurlLibを機能させる方法を書きました、ここ: http://quantcorner.wordpress.com/2012/04/ 08/using-libcurl-with-visual-c-2010 / ご覧になりたい場合。幸運を!

4
tagoma

多くのアイデアと構成の後、私はこれを追加して問題を解決しました:

#pragma comment(lib, "lib/libcurl_a.lib")

どこ libcurl_a.libはcurl libファイルの名前で、libはそれを含むフォルダーです。

0
Zsolti