Skip to content

编译遇到NetworkClientSecure连接错误 #11616

@Cmdmac

Description

@Cmdmac

Board

Esp32S3

Device Description

ESP32S3 Dev Kit-1

Hardware Configuration

代码中遇到Http网络访问编译会报NetworkClientSecure连接错误,使用的是IDF5.4.1,arduino-esp32框架版本是3.2.0

Version

latest stable Release (if not listed below)

IDE Name

VSCode

Operating System

Windows11

Flash frequency

40MHZ

PSRAM enabled

yes

Upload speed

115200

Description

代码中遇到Http网络访问编译会报NetworkClientSecure连接错误,使用的是IDF5.4.1,arduino-esp32框架版本是3.2.0

Sketch

class Speaker {

    private:
        int bclk, lrc, dout;
        // Audio audio;
        static void playDelegate(void *pvParameters) {
          Speaker* instance = static_cast<Speaker*>(pvParameters);
          while(1) {
            instance->loop();
            delay(1);
          }
        }
        void loop();

        static const char* TAG;
        static const size_t AUDIO_BUFFER_SIZE = 8192;
        static const size_t OUTPUT_BUFFER_SIZE = 4096;
        
        // WiFiClientSecure client;       // 安全网络客户端
        URLStream urlStream;           // 音频流
        I2SStream i2s;                 // I2S输出
        MP3DecoderHelix decoder;       // Helix MP3解码器
        EncodedAudioStream audioOutput;// 解码后音频流

        StreamCopy copier;  // 用于流复制
        bool is_playing;
    public:
        Speaker(int bclk, int lrc, int dout) : bclk(bclk), lrc(lrc), dout(dout),
          audioOutput(&i2s, &decoder),
          copier(audioOutput, urlStream),  // 初始化流复制器
          is_playing(false) {

        }
        void setup();
        void play(const char* source);
        void stop();
        void setVolume(float volume);

};

#endif


#include "Speaker.h"

// #define I2S_DOUT      15
// #define I2S_BCLK      16
// #define I2S_LRC       17

void Speaker::setup() {
    // 配置I2S - 根据实际硬件修改
    auto config = i2s.defaultConfig(TX_MODE);
    config.pin_ws = 25;        // 更换为你的引脚
    config.pin_bck = 26;
    config.pin_data = 27;
    config.sample_rate = 44100;
    config.bits_per_sample = 16;
    config.channels = 2;
    i2s.begin(config);

    // 配置音频处理流
    audioOutput.begin();

    // 配置安全客户端(跳过证书验证)
    // client.setInsecure();

    // audio.setPinout(bclk, lrc, dout);
    // audio.setVolume(18);
    // xTaskCreatePinnedToCore(&Speaker::playDelegate, "SpeakerTask", 4096 * 2, this, 1, NULL, 0);
}

void Speaker::play(const char* source) {
    if (is_playing) stop();
    
    Serial.printf("Playing: %s\n", source);
    is_playing = true;
    
    // 打开网络流
    urlStream.begin(source);
    
    // // 重置复制器
    // copier.resize
    
    // 开始播放
    while (urlStream && is_playing) {
      copier.copy();  // 复制数据到解码器
      delay(1);       // 防止看门狗复位
    }
    
    stop();
}

void Speaker::stop() {
    if (!is_playing) return;
    
    is_playing = false;
    urlStream.end();
    audioOutput.flush();
    Serial.println("Playback stopped");
}

void Speaker::setVolume(float volume) {
    // 设置音量 (0.0 ~ 1.0)
    // i2s.setVolume(volume);
}

void Speaker::loop() {
    // audio.loop();
}

const char* Speaker::TAG = "Speaker";

Debug Message

报错日志如下:

`[7/9] Linking CXX executable main.elf
FAILED: main.elf
C:\Windows\system32\cmd.exe /C "cd . && D:\Espressif\tools\xtensa-esp-elf\esp-14.2.0_20241119\xtensa-esp-elf\bin\xtensa-esp32s3-elf-g++.exe -mlongcalls  -fno-builtin-memcpy -fno-builtin-memset -fno-builtin-bzero -fno-builtin-stpcpy -fno-builtin-strncpy -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32S3=0 -Wl,--Map=D:/Espressif-projects/hello_world/build/main.map -Wl,--no-warn-rwx-segments -Wl,--orphan-handling=warn -fno-rtti -fno-lto -Wl,--gc-sections -Wl,--warn-common -T esp32s3.peripherals.ld -T esp32s3.rom.ld -T esp32s3.rom.api.ld -T esp32s3.rom.bt_funcs.ld -T esp32s3.rom.libgcc.ld -T esp32s3.rom.wdt.ld -T esp32s3.rom.version.ld -T esp32s3.rom.newlib.ld -T memory.ld -T sections.ld @CMakeFiles\main.elf.rsp -o main.elf && cd ."
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure4stopEv+0x0): undefined reference to `stop_ssl_socket(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure5writeEPKhj+0xc): undefined reference to `send_net_data(sslclient_context*, unsigned char const*, unsigned int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure5writeEPKhj+0x10): undefined reference to `send_ssl_data(sslclient_context*, unsigned char const*, unsigned int)'        
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure4readEPhj+0x8): undefined reference to `get_net_receive(sslclient_context*, unsigned char*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure4readEPhj+0xc): undefined reference to `get_ssl_receive(sslclient_context*, unsigned char*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure9availableEv+0xc): undefined reference to `peek_net_receive(sslclient_context*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure9availableEv+0x10): undefined reference to `data_to_read(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure7connectE9IPAddresstPKcS2_S2_S2_+0x8): undefined reference to `start_ssl_client(sslclient_context*, IPAddress const&, unsigned long, char const*, int, char const*, bool, char const*, char const*, char const*, char const*, bool, char const**)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecure7connectE9IPAddresstPKcS2_S2_S2_+0xc): undefined reference to `ssl_starttls_handshake(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj):(.literal._ZN19NetworkClientSecureC2Ev+0x4): undefined reference to `ssl_init(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::stop()':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:102:(.text._ZN19NetworkClientSecure4stopEv+0x6): undefined reference to `stop_ssl_socket(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::NetworkClientSecure()::{lambda(sslclient_context*)#1}::operator()(sslclient_context*) const':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:36:(.text._ZZN19NetworkClientSecureC4EvENKUlP17sslclient_contextE_clES1_+0x6): undefined reference to `stop_ssl_socket(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::write(unsigned char const*, unsigned int)':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:231:(.text._ZN19NetworkClientSecure5writeEPKhj+0x16): undefined reference to `send_net_data(sslclient_context*, unsigned char const*, unsigned int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:239:(.text._ZN19NetworkClientSecure5writeEPKhj+0x74): undefined reference to `send_ssl_data(sslclient_context*, unsigned char const*, unsigned int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::read(unsigned char*, unsigned int)':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:253:(.text._ZN19NetworkClientSecure4readEPhj+0x10): undefined reference to `get_net_receive(sslclient_context*, unsigned char*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:286:(.text._ZN19NetworkClientSecure4readEPhj+0xd8): undefined reference to `get_ssl_receive(sslclient_context*, unsigned char*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::available()':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:298:(.text._ZN19NetworkClientSecure9availableEv+0xe): undefined reference to `peek_net_receive(sslclient_context*, int)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:302:(.text._ZN19NetworkClientSecure9availableEv+0x2e): undefined reference to `data_to_read(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::connect(IPAddress, unsigned short, char const*, char const*, char const*, char const*)':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:148:(.text._ZN19NetworkClientSecure7connectE9IPAddresstPKcS2_S2_S2_+0x2c): undefined reference to `start_ssl_client(sslclient_context*, IPAddress const&, unsigned long, char const*, int, char const*, bool, char const*, char const*, char const*, char const*, bool, char const**)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:151:(.text._ZN19NetworkClientSecure7connectE9IPAddresstPKcS2_S2_S2_+0x3f): undefined reference to `ssl_starttls_handshake(sslclient_context*)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::connect(char const*, unsigned short, char const*, char const*)':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:196:(.text._ZN19NetworkClientSecure7connectEPKctS1_S1_+0x40): undefined reference to `start_ssl_client(sslclient_context*, IPAddress const&, unsigned long, char const*, int, char const*, bool, char const*, char const*, char const*, char const*, bool, char const**)'
D:/Espressif/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/14.2.0/../../../../xtensa-esp-elf/bin/ld.exe: esp-idf/espressif__arduino-esp32/libespressif__arduino-esp32.a(NetworkClientSecure.cpp.obj): in function `NetworkClientSecure::NetworkClientSecure()':
D:/Espressif-projects/hello_world/managed_components/espressif__arduino-esp32/libraries/NetworkClientSecure/src/NetworkClientSecure.cpp:35:(.text._ZN19NetworkClientSecureC2Ev+0x33): undefined reference to `ssl_init(sslclient_context*)'
collect2.exe: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

 *  The terminal process "d:\Espressif\tools\tools\ninja\1.12.1\ninja.EXE" terminated with exit code: 1. `

Other Steps to Reproduce

No response

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions