如何让curl库在c++中工作?[关闭]

nkcskrwz  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(221)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
4天前关闭。
Improve this question
我使用的是CLion程序。这是我第一次尝试使用外部库,所以我还不太了解它。我找到了如何设置库的说明,但它仍然不适合我。CMakeList.txt没有显示错误,但在main.cpp中出现了以下错误:

  1. ====================[ Build | untitled | Debug ]================================
  2. "C:\Program Files\JetBrains\CLion 2023.1.3\bin\cmake\win\x64\bin\cmake.exe" --build C:\Users\Tomáš\CLionProjects\untitled\cmake-build-debug --target untitled -j 3
  3. [1/1] Linking CXX executable untitled.exe
  4. FAILED: untitled.exe
  5. cmd.exe /C "cd . && C:\PROGRA~1\JETBRA~1\CLION2~1.3\bin\mingw\bin\G__~1.EXE -g CMakeFiles/untitled.dir/main.cpp.obj -o untitled.exe -Wl,--out-implib,libuntitled.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lcurl -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ."
  6. C:\Program Files\JetBrains\CLion 2023.1.3\bin\mingw\bin/ld.exe: cannot find -lcurl
  7. collect2.exe: error: ld returned 1 exit status
  8. ninja: build stopped: subcommand failed.

我使用这个代码:CMakeList.txt:

  1. cmake_minimum_required(VERSION 3.25)
  2. project(untitled)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CURL_LIBRARY "-LC:/C++ library/curl-8.1.2_3-win64-mingw/curl-8.1.2_3-win64-mingw")
  5. include_directories("C:/C++ library/curl-8.1.2_3-win64-mingw/curl-8.1.2_3-win64-mingw/include")
  6. add_executable(untitled main.cpp)
  7. target_link_libraries(untitled ${CURL_LIBRARIES} curl)

main.cpp:

  1. #include <iostream>
  2. #include <curl/curl.h>
  3. int main() {
  4. curl_global_init(CURL_GLOBAL_ALL);
  5. CURL* curl = curl_easy_init();
  6. if (curl) {
  7. curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
  8. CURLcode res = curl_easy_perform(curl);
  9. if (res != CURLE_OK) {
  10. std::cerr << "Chyba pri provadeni pozadavku: " << curl_easy_strerror(res) << std::endl;
  11. }
  12. curl_easy_cleanup(curl);
  13. }
  14. curl_global_cleanup();
  15. return 0;
  16. }

我已经尝试了几个教程,但都不适合我。
我将非常感谢你的帮助。

ubby3x7f

ubby3x7f1#

正确的解决方案是一个IMPORTED目标,您可以链接到:

  1. add_library(curl SHARED IMPORTED)
  2. set_target_properties(curl PROPERTIES
  3. IMPORTED_LOCATION "C:/C++ library/curl-8.1.2_3-win64-mingw/curl-8.1.2_3-win64-mingw/libcurl.dll"
  4. IMPORTED_IMPLIB "C:/C++ library/curl-8.1.2_3-win64-mingw/curl-8.1.2_3-win64-mingw/libcurl.lib"
  5. INTERFACE_INCLUDE_DIRECTORIES "C:/C++ library/curl-8.1.2_3-win64-mingw/curl-8.1.2_3-win64-mingw/include")
  6. target_link_libraries(untitled curl)

相关问题