Я скачал стандартную для libcurl версию для win xp. Я использую C ++ Builder 2007.
Я добавил
* curl \ include в папке Project-> Options-> Paths and Defines -> [Включить путь]
Папка * curl \ lib в Project-> Options-> Paths and Defines -> [Путь к библиотеке]
Я создал простой проект с main.h
как:
#ifndef mainH
#define mainH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <curl/curl.h>
#include <curl/easy.h>
#include <stdio.h>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif
и main.cpp как:
#include <vcl.h>
#pragma hdrstop
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//#pragma comment(lib, "C:\Dev\Curl\bin\libcurl.dll")
//#pragma comment(lib, "C:\Dev\Curl\lib\libcurl.a")
//#pragma comment(lib, "C:\Dev\Curl\lib\libcurl.dll.a")
TForm3 *Form3;
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
/* example.com is redirected, so we tell libcurl to follow redirection */
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
}
//---------------------------------------------------------------------------
Когда я запускаю программу, я получаю ошибку компоновщика как:
[ILINK32 Error] Error: Unresolved external '_curl_easy_init' referenced from C:\DOCUMENTS AND SETTINGS\VATISH\DESKTOP\LIBCURLDEMO\DEBUG\MAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_setopt' referenced from C:\DOCUMENTS AND SETTINGS\VATISH\DESKTOP\LIBCURLDEMO\DEBUG\MAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_perform' referenced from C:\DOCUMENTS AND SETTINGS\VATISH\DESKTOP\LIBCURLDEMO\DEBUG\MAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_strerror' referenced from C:\DOCUMENTS AND SETTINGS\VATISH\DESKTOP\LIBCURLDEMO\DEBUG\MAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_cleanup' referenced from C:\DOCUMENTS AND SETTINGS\VATISH\DESKTOP\LIBCURLDEMO\DEBUG\MAIN.OBJ
На основании моего поиска мне нужен файл libcurl.lib
, чтобы удовлетворить компоновщик, но такого файла нет в папке установки libcurl.
Пожалуйста, предложите, как это можно решить.
Обновление : я получаю libcurl.lib
, используя Borland\RAD Studio\5.0\bin>implib -a libcurl.lib libcurl.dll
, и проект не жалуется на libcurl.lib
, но теперь он хочет libcrypto-1_1-x64.dll
файл ("Не удалось запустить приложение, потому что libcrypto-1_1- x64.dll не был найден. Переустановка приложения может решить проблему «ошибка, выданная BCB).
Я попытался загрузить файл libcrypto-1_1-x64.dll
из Интернета, но получил сообщение "Приложение или DLL \ Borland \ RAD Studio \ 5.0 \ bin \ libcrypto-1_1-x64.dll не является допустимым образом Windows."
Обновление 2: Я попытался добавить libcurl.lib
как динамически, так и статически, но все еще сталкиваюсь с одной и той же ошибкой, т. Е. «Не удалось запустить приложение, поскольку libcrypto-1_1-x64.dll не был найден . Повторная установка приложения может решить проблему ".
Примечание: Я работаю над 32-разрядной версией Windows XP, а мое приложение - 32-разрядной.
Есть предложения?