MinGW 未定义引用 libcurl
MinGW undefined reference libcurl
所以我用 C++ 编写了一个应用程序来使用列表从 Web 下载 mp3。
它使用 libcurl 来下载它们。
我在 linux。使用
编译
g++ main.cpp -lcurl -o word2mp3
工作正常。
我需要一个 windows 可执行文件,但是 运行
x86_64-w64-mingw32-g++ main.cpp -o wordtest
returns
undefined reference to `__imp_curl_easy_init'
后面是其他 curl 函数。在命令中添加 -lcurl 也会报错,指出找不到 curl。
我到处都试过了,没有运气,我是初学者。
Link 到我的 github 回购:https://github.com/sharpclone/Word2Mp3
要修复未定义的引用警告,您需要 link 到所需的库,因此 -lcurl
是正确且必需的。
如果编译器找不到库,你需要告诉他在哪里可以找到它,这可以通过传递 -L
后跟库的路径(即目录的路径)来完成libcurl.dll.a
所在的位置)。
参数的顺序也可以相关,我认为正确的顺序应该是-L <path> -lcurl
。
你需要用MinGW编译libcurl,或者找一个预编译好的。您安装的用于在 Linux 上编译您的应用程序的是使用 Linux 编译器编译的,不适用于 MinGW。
MSYS2 repos 有一堆针对不同风格的 MinGW 的预编译库。
我已经 a script 自动下载这些库,因为它们的包管理器只适用于 Windows。
git clone https://github.com/holyblackcat/quasi-msys2
cd quasi-msys2
make install _gcc _curl
env/shell.sh
cd ..
git clone https://github.com/sharpclone/Word2Mp3
cd Word2Mp3/
win-clang++ main.cpp -lcurl -o word2mp3
这不依赖于外部 MinGW 安装,只需要安装 Clang(和 LLD)(Linux 的常规 Clang,与 GCC 不同,您不需要安装特殊版本cross-compile).
或者,如果您更喜欢现有的编译器,可以停在 make install _curl
,然后手动指定已安装库的路径,通常是 -Lquasi-msys2/root/mingw64/lib
。您只需要确保 MSYS2 repo you're using 与您的编译器匹配。
所以我用 C++ 编写了一个应用程序来使用列表从 Web 下载 mp3。 它使用 libcurl 来下载它们。
我在 linux。使用
编译 g++ main.cpp -lcurl -o word2mp3
工作正常。
我需要一个 windows 可执行文件,但是 运行
x86_64-w64-mingw32-g++ main.cpp -o wordtest
returns
undefined reference to `__imp_curl_easy_init'
后面是其他 curl 函数。在命令中添加 -lcurl 也会报错,指出找不到 curl。
我到处都试过了,没有运气,我是初学者。
Link 到我的 github 回购:https://github.com/sharpclone/Word2Mp3
要修复未定义的引用警告,您需要 link 到所需的库,因此 -lcurl
是正确且必需的。
如果编译器找不到库,你需要告诉他在哪里可以找到它,这可以通过传递 -L
后跟库的路径(即目录的路径)来完成libcurl.dll.a
所在的位置)。
参数的顺序也可以相关,我认为正确的顺序应该是-L <path> -lcurl
。
你需要用MinGW编译libcurl,或者找一个预编译好的。您安装的用于在 Linux 上编译您的应用程序的是使用 Linux 编译器编译的,不适用于 MinGW。
MSYS2 repos 有一堆针对不同风格的 MinGW 的预编译库。
我已经 a script 自动下载这些库,因为它们的包管理器只适用于 Windows。
git clone https://github.com/holyblackcat/quasi-msys2
cd quasi-msys2
make install _gcc _curl
env/shell.sh
cd ..
git clone https://github.com/sharpclone/Word2Mp3
cd Word2Mp3/
win-clang++ main.cpp -lcurl -o word2mp3
这不依赖于外部 MinGW 安装,只需要安装 Clang(和 LLD)(Linux 的常规 Clang,与 GCC 不同,您不需要安装特殊版本cross-compile).
或者,如果您更喜欢现有的编译器,可以停在 make install _curl
,然后手动指定已安装库的路径,通常是 -Lquasi-msys2/root/mingw64/lib
。您只需要确保 MSYS2 repo you're using 与您的编译器匹配。