You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

libnx开发任天堂自制应用时curl未定义引用错误求助

Switch自制应用libnx环境下curl函数未定义引用问题

在libnx环境开发调用curl库的任天堂Switch自制应用时,编译阶段出现大量curl相关函数的未定义引用错误,修改Makefile后问题仍未解决。

错误日志

PS C:\Users\{USER}\Downloads\Programming\C\Homebrew\applications\DiscordLogin> make clean && nacptool --create "Discord Login" "MonkeyFeet10" "1.0.0-DEV" "DiscordLogin.nacp" && make
clean ...
main.c
linking DiscordLogin.elf
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: main.o: in function `tempSendMessage':
C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:15:(.text.tempSendMessage+0xc): undefined reference to `curl_global_init'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:16:(.text.tempSendMessage+0x10): undefined reference to `curl_easy_init'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:20:(.text.tempSendMessage+0x2c): undefined reference to `curl_slist_append'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:21:(.text.tempSendMessage+0x38): undefined reference to `curl_slist_append'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:22:(.text.tempSendMessage+0x50): undefined reference to `curl_easy_setopt'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:23:(.text.tempSendMessage+0x60): undefined reference to `curl_easy_setopt'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:24:(.text.tempSendMessage+0x70): undefined reference to `curl_easy_setopt'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:25:(.text.tempSendMessage+0x84): undefined reference to `curl_easy_setopt'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:26:(.text.tempSendMessage+0x8c): undefined reference to `curl_easy_perform'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:30:(.text.tempSendMessage+0x98): undefined reference to `curl_slist_free_all'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:31:(.text.tempSendMessage+0xa0): undefined reference to `curl_easy_cleanup'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:33:(.text.tempSendMessage+0xac): undefined reference to `curl_global_cleanup'
C:/devkitpro/devkitA64/bin/../lib/gcc/aarch64-none-elf/14.2.0/../../../../aarch64-none-elf/bin/ld.exe: C:/Users/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/source/main.c:28:(.text.tempSendMessage+0xb0): undefined reference to `curl_easy_strerror'
collect2.exe: error: ld returned 1 exit status
make[1]: *** [C:\devkitpro/libnx/switch_rules:81: /home/{USER}/Downloads/Programming/C/Homebrew/applications/DiscordLogin/DiscordLogin.elf] Error 1
make: *** [Makefile:169: build] Error 2
PS C:\Users\{USER}\Downloads\Programming\C\Homebrew\applications\DiscordLogin> 

开发环境

  • 操作系统:Windows
  • DevKitPro安装路径:C:\devkitPro\
  • 开发工具:Visual Studio Code

解决方案

1. 确认安装switch-curl库

打开devkitPro自带的MSYS2终端,执行以下命令安装适用于Switch的curl包:

pacman -S switch-curl

2. 修正Makefile配置

  • 在Makefile的LIBS变量中添加curl及其依赖库:
    LIBS := -lnx -lcurl -lmbedtls -lmbedx509 -lmbedcrypto
    
  • 确保Makefile中已包含头文件与链接库路径配置:
    CFLAGS += -I$(DEVKITPRO)/portlibs/switch/include
    LDFLAGS += -L$(DEVKITPRO)/portlibs/switch/lib
    
  • 确认Makefile开头已引入libnx规则:
    include $(DEVKITPRO)/libnx/switch_rules
    

3. 检查代码头文件引用

确保代码中正确引用curl头文件:

#include <curl/curl.h>

4. 彻底清理后重新编译

执行以下命令清理旧编译产物并重新构建:

make clean && make

内容的提问来源于stack exchange,提问作者MonkeyFeet10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:29:48