Building Flash Component

博客介绍了Flash组件的创建与使用流程。添加或更新组件时需Reload Component窗体。创建组件要新建Flash文档、Movie Clip,设置所需的Layer和Frame,在Library添加Asset组件,编写代码、配置组件,最后进行测试、输出使用并做调整。

1.    Component基础

Component本质上是一个Movie Clip。与普通Movie Clip不同的是:Component自身可以提供property、method等特性,而且可以给其它Flash用户使用。
Flash MX 2004支持fla、swf和swc格式的component,我们这里只讲swc格式组件的制作方法。Flash MX 2004所提供的标准组件都是swc格式的。
 
Flash MX 2004的组件保存在系统盘的以下目录中:
/Documents and Settings/[登录名]/Local Settings/Application Data/Macromedia/Flash MX 2004/en/Configuration/Components
其中“[登录名]”用自己的用户名代替。
在这个目录下,可以创建子目录来给组件分类。把新做的组件复制到这个目录中,就可以使用了。

添加或更新组建时,Flash的Component窗体中不会马上表现出来,而必须Reload Component窗体。具体方法是:选择Component窗体的菜单,点击Reload菜单项,如下图:

 
Reload之后就可以在Component窗体中看到刚才添加的组件了。
 

2.    新建Flash文档

这个创建Component的第一个步骤。
要制作Component必须从一个Flash文档开始。创建一个Flash Document类型的文档。
这个Flash文档是Component的制作和测试环境。
文档创建好之后保存。
可以通过一个Flash文档创建多个组件,如果这几个组件关系密切,在一个Flash文档中创建会很方便。但不要在一个Flash文档中创建多个无关的组件。
 

3.    创建Movie Clip

在Flash文档的Library窗口中点击 “Create New Symbol”。这是个小按钮,位于Library窗体的左下角。要给新建的Movie Clip起一个友好的名字,第一个例子我们叫做“TestComponent”。
在“Create New Symbol”按钮旁还有一个小按钮 “Create Folder”,这个按钮用来在Library中创建Folder。记得用Folder来分类整理Library中的内容。可以把组件从一个目录拖放到另一个目录中。
 

4.    Component需要的Layer和Frame

双击打开刚创建的Movie Clip,然后建立相应的Layer和Frame。几乎所有的Component的Layer和Frame结构都是相同的:
  • 创建3个Layer,分别叫“Action”、“Bounding”和“Assets”。Layer的名字实际上是无关的,但这样取名更容易让人理解。
  • 在Assets的Frame2的位置新建一个Key Frame。
  • Action的Frame1的Action Script中加一句:stop();
暂时先这样,等一下我们会再添加一些东西。添加好后,Timeline如下图:
 

5.    在Library中添加需要的Asset组件

在Library中创建名叫Assets的Folder。在Folder中添加组件中需要用到的其它组件。
有两种方法添加需要的组件,根据要制作的组件的功能选择。如果组件不依赖于任何现有的Component,就应该从FlashComponent.fla中添加组件,否则从Component窗体中直接添加组件。
在第一个例子中,我们从FlashComponent.fla中添加组件。FlashComponent.fla是Flash MX 2004标准组件的源代码,其中有一个经常被用作基类的组件“UIComponent”。FlashComponent.fla在Flash安装目录下的en/Configuration/ComponentFLA。FlashComponent.fla中有很多常用的Movie Clip和大量的工具Movie Clip,我们需要的“UIComponent”在Library目录中的/Base Classes/ FUIObject Subclasses中。另一个需要的Movie Clip是“BoundingBox”,位于/Component Assets中。把这两个Movie Clip拖到刚才创建的Assets Folder中。
 

6.    添加Asset

打开Assets Layer的Frame2,就是刚才创建的那个Frame。把UIComponent拖到画面中。Movie Clip放置的位置是无关紧要的,如果Assets中组建较多,把它们排整齐。在这个例子中我们只需要这个Asset。
 

7.    创建Bounding对象

打开BoundingBox Layer,在Frame1中添加一个BoundingBox对象。还记得吗?就是第5步中拖到Library中的那个。
给这个对象起名叫“boundingBox_mc”,注意大小写,Action Script 2.0是大小写敏感的。
调整对象的位置到(0,0),大小为(200,50)。可以通过下面的Properties窗体迅速调整,如下图:

宽是200
高是50
(图中的尺寸标注有误,请参考文字说明。)
BoundingBox的作用是标注组件的初始大小,除此外没有其它用途。如果你想让组件有不同的初始大小,可以通过改变BoundingBox的大小来实现。
BoundingBox的左上角位置绝大部份情况都在(0,0)。除非你很了解它的作用,否则不要改变这个位置。
 

8.    编写Component的代码

下面创建一个as文件,名字叫做TestComponent.as。和fla文件存在同一个目录中。as文件保存的位置很重要,在本例中一定要和第二步中的fla存放的相同的目录中。TestComponent.as的内容如下:
 
import mx.core.UIComponent;  // 引入基类
 
[Event("click")]  // 定义click事件
 
class TestComponent extends UIComponent
{
     static var symbolName:String = "TestComponent";   // (标准)定义Movie Clip的名字
     static var symbolOwner:Object = TestComponent;    // (标准)定义class的名字
     static var version:String = "1.0.0.0";              // (标准)版本号
    
     var className = "TestComponent";                // (标准)适用CSS的class名,一般和组件名相同
     private var boundingBox_mc:MovieClip;               // 定义BoundingBox的变量名,
// 必须和第7步中的取名相同
    
     private var m_color:Number;       // 组件中的私有变量,用于控制组建的颜色
    
     function TestComponent(Void)      // (标准)构造函数,必须为空
     {
     }
    
     private function init(Void):Void    // (标准)初始化代码写在这里
     {
            super.init();                   // (标准)调用基类的初始化函数
            boundingBox_mc._visible = false;  //(标准)隐藏BoundingBox
     }
    
     private function size(Void):Void    // (标准)尺寸改变时的处理函数
     {
            super.size();                   // (标准)调用基类的处理函数
            invalidate();                   // 自己的处理步骤,我们要做的就是重画组件,
// invalidate是标准的重画函数
     }
    
     private function createChildren(Void):Void // (标准)创建子对象
     {
            super.createChildren();      // (标准)调用基类的相应函数
                                                // 这个组件没有子对象
     }
    
     private function draw(Void):Void       // (标准)描画组件,刚才的invalidate会间接调用这里
     {
            super.draw();                          // (标准)先描画基类对象
            this.clear();                          // 清除Movie Clip
            this.beginFill(m_color, 100);       // 下面的代码将Movie Clip填充成指定颜色
            this.moveTo(0, 0);                     // __width和__height是标准内部变量
            this.lineTo(__width, 0);              // 用于指定组件的尺寸
            this.lineTo(__width, __height);
            this.lineTo(0, __height);
            this.lineTo(0, 0);
            this.endFill();
     }
    
     private function onPress()                         // Movie Clip的标准事件处理函数
     {
            dispatchEvent({type:"click"});             // 发送click消息
     }
    
     private function onRollOver()                     // Movie Clip标准事件处理函数
     {
            this._alpha = 50;                            // 鼠标移上来时变成半透明
     }
    
     private function onRollOut()                       // Movie Clip标准事件处理函数
     {
            this._alpha = 100;                            // 鼠标离开时变成不透明
     }
    
     // 定义一个属性
     [Inspectable(type="Color", defaultValue="#FF0000", category="Nelson")]
     function get color():Number             // 取得属性的函数
     {
            return m_color;
     }
     function set color(c:Number)            // 设置属性的函数
     {
            m_color = c;
     }
}
 
代码中的要点:
1.      绝大多数组件继承UIComponent,init、size、draw、createChildren这些都是UIComponent提供的虚函数。另外UIComponent还提供了dispatchEvent和invalidate等处理函数。具体参考Flash文档中关于UIComponent和UIObject的描述。(UIObject是UIComponent的基类)
2.      UIComponent从UIObject继承,而UIObject从MovieClip继承,所以class中可以直接使用MovieClip中的函数,如lineTo等。通过重载onPress等函数,可以直接响应事件。但通过这种方式响应事件会阻止基类响应此事件。
3.      带有“(标准)”字样的行是从UIComponent继承的组件的标准写法。
4.      代码经过验证是正确的,担注释是后来加的,如果需要copy-paste的话,先把注释去掉。
5.      代码完成后应该检查与法,并且保存。
 

9.    配置组件

代码完成后保存好。这一步我们把组件和对应的代码关联起来。
首先在Library中右键点击TestComponent,选择“Linkage…”。选择“Export for ActionScript”,然后在AS2.0 Class中填上刚才class的名字,如下图:
点“OK”后,再次右键点击TestComponet,选择“Component Definition…”,在AS2.0 Class中填上class名,然后点“OK”。
上图的Parameters在第一次选择是不会出现,当再次打开这个对话框才会看到。
 

10.测试

把做好的控件添加到Flash的主Frame中,从Property中可以选择颜色。
测试控件的表现、对鼠标移动的响应和事件是否能正确输出。
这一部可以使用Flash开发环境的测试功能来调试代码。
 

11.输出和使用组件

右键点击Library中的TestComponent,然后选择“Export SWC File…”
把组件复制到相应的目录中,然后创建新的Flash Document测试组件。
重点测试开发环境中的表现,例如改变大小等操作是否正确,修改属性能不能正确表现出来。
 

12.最后的调整

如果在第11部中存在问题,不可以使用Flash本身的代码调试功能,但可以使用添加trace的方法找出并解决问题。 
[1072/1082] Building CXX object esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj D:/ESP32/1/components/OLED/OLED.C: In function 'void I2C_Init()': D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::intr_priority' -Wmissing-field-initializers] 103 | }; | ^ D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::trans_queue_depth' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::<unnamed struct>::allow_pd' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:115:5: warning: missing initializer for member 'i2c_device_config_t::scl_wait_us' [-Wmissing-field-initializers] 115 | }; | ^ [1074/1082] Performing configure step for 'bootloader' -- Found Git: C:/esp32/Espressif/tools/tools/idf-git/2.39.2/cmd/git.exe (found version "2.39.2.windows.1") -- Minimal build - OFF -- The C compiler identification is GNU 14.2.0 -- The CXX compiler identification is GNU 14.2.0 -- The ASM compiler identification is GNU -- Found assembler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Building ESP-IDF components for target esp32s3 -- Project sdkconfig file D:/ESP32/1/sdkconfig -- Compiler supported targets: xtensa-esp-elf -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/soc/esp32s3/ld/esp32s3.peripherals.ld -- Bootloader project name: "bootloader" version: 1 -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.rom.ld -- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_security esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa -- Component paths: C:/esp32/v5.5.1/esp-idf/components/bootloader C:/esp32/v5.5.1/esp-idf/components/bootloader_support C:/esp32/v5.5.1/esp-idf/components/efuse C:/esp32/v5.5.1/esp-idf/components/esp_app_format C:/esp32/v5.5.1/esp-idf/components/esp_bootloader_format C:/esp32/v5.5.1/esp-idf/components/esp_common C:/esp32/v5.5.1/esp-idf/components/esp_hw_support C:/esp32/v5.5.1/esp-idf/components/esp_rom C:/esp32/v5.5.1/esp-idf/components/esp_security C:/esp32/v5.5.1/esp-idf/components/esp_system C:/esp32/v5.5.1/esp-idf/components/esptool_py C:/esp32/v5.5.1/esp-idf/components/freertos C:/esp32/v5.5.1/esp-idf/components/hal C:/esp32/v5.5.1/esp-idf/components/log C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/components/micro-ecc C:/esp32/v5.5.1/esp-idf/components/newlib C:/esp32/v5.5.1/esp-idf/components/partition_table C:/esp32/v5.5.1/esp-idf/components/soc C:/esp32/v5.5.1/esp-idf/components/spi_flash C:/esp32/v5.5.1/esp-idf/components/xtensa -- Configuring done (22.6s) -- Generating done (0.3s) -- Build files have been written to: D:/ESP32/1/build/bootloader [1075/1082] Performing build step for 'bootloader' [1/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/util.c.obj [2/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/util.c.obj [3/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_crc.c.obj [4/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj [5/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj [6/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj [7/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj [8/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_print.c.obj [9/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log.c.obj [10/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_format_text.c.obj [11/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj [12/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj [13/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/buffer/log_buffers.c.obj [14/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj [15/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_writeback_esp32s3.S.obj [16/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_systimer.c.obj [17/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj [18/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj [19/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj [20/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_wdt.c.obj [21/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_esp32s2_esp32s3.c.obj [22/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj [23/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/esp_cpu_intr.c.obj [24/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/cpu_region_protect.c.obj [25/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj [26/123] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj [27/123] Linking C static library esp-idf\log\liblog.a [28/123] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj [29/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_table.c.obj [30/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/chip_info.c.obj [31/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_sleep.c.obj [32/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_fields.c.obj [33/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk_init.c.obj [34/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_utility.c.obj [35/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_rtc_calib.c.obj [36/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_time.c.obj [37/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_init.c.obj [38/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj [39/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk.c.obj [40/123] Linking C static library esp-idf\esp_rom\libesp_rom.a [41/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj [42/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj [43/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/with_key_purposes/esp_efuse_api_key.c.obj [44/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj [45/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj [46/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj [47/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj [48/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj [49/123] Linking C static library esp-idf\esp_common\libesp_common.a [50/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32s3.c.obj [51/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj [52/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj [53/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj [54/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj [55/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_sha.c.obj [56/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj [57/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj [58/123] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj [59/123] Linking C static library esp-idf\esp_hw_support\libesp_hw_support.a [60/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32s3.c.obj [61/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_soc.c.obj [62/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj [63/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj [64/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj [65/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj [66/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj [67/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj [68/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj [69/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj [70/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj [71/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/lldesc.c.obj [72/123] Linking C static library esp-idf\esp_system\libesp_system.a [73/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/interrupts.c.obj [74/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32s3/efuse_hal.c.obj [75/123] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj [76/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj [77/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj [78/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj [79/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gpio_periph.c.obj [80/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/uart_periph.c.obj [81/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/adc_periph.c.obj [82/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/dedic_gpio_periph.c.obj [83/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/cache_hal.c.obj [84/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gdma_periph.c.obj [85/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_esp32s3.c.obj [86/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdm_periph.c.obj [87/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/spi_periph.c.obj [88/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/ledc_periph.c.obj [89/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rmt_periph.c.obj [90/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/pcnt_periph.c.obj [91/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2s_periph.c.obj [92/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/touch_sensor_periph.c.obj [93/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/timer_periph.c.obj [94/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/temperature_sensor_periph.c.obj [95/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2c_periph.c.obj [96/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/lcd_periph.c.obj [97/123] Linking C static library esp-idf\efuse\libefuse.a [98/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mpi_periph.c.obj [99/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mcpwm_periph.c.obj [100/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/twai_periph.c.obj [101/123] Generating project_elf_src_esp32s3.c [102/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdmmc_periph.c.obj [103/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/cam_periph.c.obj [104/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/usb_dwc_periph.c.obj [105/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/power_supply_periph.c.obj [106/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/wdt_periph.c.obj [107/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj [108/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rtc_io_periph.c.obj [109/123] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src_esp32s3.c.obj [110/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj [111/123] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj [112/123] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj [113/123] Linking C static library esp-idf\bootloader_support\libbootloader_support.a [114/123] Linking C static library esp-idf\esp_bootloader_format\libesp_bootloader_format.a [115/123] Linking C static library esp-idf\spi_flash\libspi_flash.a [116/123] Linking C static library esp-idf\hal\libhal.a [117/123] Linking C static library esp-idf\micro-ecc\libmicro-ecc.a [118/123] Linking C static library esp-idf\soc\libsoc.a [119/123] Linking C static library esp-idf\xtensa\libxtensa.a [120/123] Linking C static library esp-idf\main\libmain.a [121/123] Linking C executable bootloader.elf [122/123] Generating binary image from built executable esptool.py v4.10.0 Creating esp32s3 image... Merged 2 ELF sections Successfully created esp32s3 image. Generated D:/ESP32/1/build/bootloader/bootloader.bin [123/123] C:\WINDOWS\system32\cmd.exe /C "cd /D D:\ESP32\1\build\bootloader\esp-idf\esptool_py && c:\esp32\Espressif\tools\python_env\idf5.5_py3.11_env\Scripts\python.exe C:/esp32/v5.5.1/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 D:/ESP32/1/build/bootloader/bootloader.bin" Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free. [1081/1082] Generating binary image from built executable esptool.py v4.10.0 Creating esp32s3 image... Merged 2 ELF sections Successfully created esp32s3 image. Generated D:/ESP32/1/build/1.bin [1082/1082] C:\WINDOWS\system32\cmd.exe /C "cd /D D:\ESP32\1.../partition_table/partition-table.bin D:/ESP32/1/build/1.bin FAILED: esp-idf/esptool_py/CMakeFiles/app_check_size D:/ESP32/1/build/esp-idf/esptool_py/CMakeFiles/app_check_size C:\WINDOWS\system32\cmd.exe /C "cd /D D:\ESP32\1\build\esp-idf\esptool_py && c:\esp32\Espressif\tools\python_env\idf5.5_py3.11_env\Scripts\python.exe C:/esp32/v5.5.1/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 partition --type app D:/ESP32/1/build/partition_table/partition-table.bin D:/ESP32/1/build/1.bin" Error: app partition is too small for binary 1.bin size 0x100580: - Part 'factory' 0/0 @ 0x10000 size 0x100000 (overflow 0x580) ninja: build stopped: subcommand failed.
11-26
[977/1082] Building CXX object esp-idf/OLED/CMakeFiles/__idf_OLED.dir/OLED.C.obj D:/ESP32/1/components/OLED/OLED.C: In function 'void I2C_Init()': D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::intr_priority' [-Wmissing-field-initializers] 103 | }; | ^ D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::trans_queue_depth' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:103:5: warning: missing initializer for member 'i2c_master_bus_config_t::<unnamed struct>::allow_pd' [-Wmissing-field-initializers] D:/ESP32/1/components/OLED/OLED.C:115:5: warning: missing initializer for member 'i2c_device_config_t::scl_wait_us' [-Wmissing-field-initializers] 115 | }; | ^ [1074/1082] Performing configure step for 'bootloader' -- Found Git: C:/esp32/Espressif/tools/tools/idf-git/2.39.2/cmd/git.exe (found version "2.39.2.windows.1") -- Minimal build - OFF -- The C compiler identification is GNU 14.2.0 -- The CXX compiler identification is GNU 14.2.0 -- The ASM compiler identification is GNU -- Found assembler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-gcc.exe - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: C:/esp32/Espressif/tools/tools/xtensa-esp-elf/esp-14.2.0_20241119/xtensa-esp-elf/bin/xtensa-esp32s3-elf-g++.exe - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Building ESP-IDF components for target esp32s3 -- Project sdkconfig file D:/ESP32/1/sdkconfig -- Compiler supported targets: xtensa-esp-elf -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/soc/esp32s3/ld/esp32s3.peripherals.ld -- Bootloader project name: "bootloader" version: 1 -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libc.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.ld -- Adding linker script C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main/ld/esp32s3/bootloader.rom.ld -- Components: bootloader bootloader_support efuse esp_app_format esp_bootloader_format esp_common esp_hw_support esp_rom esp_security esp_system esptool_py freertos hal log main micro-ecc newlib partition_table soc spi_flash xtensa -- Component paths: C:/esp32/v5.5.1/esp-idf/components/bootloader C:/esp32/v5.5.1/esp-idf/components/bootloader_support C:/esp32/v5.5.1/esp-idf/components/efuse C:/esp32/v5.5.1/esp-idf/components/esp_app_format C:/esp32/v5.5.1/esp-idf/components/esp_bootloader_format C:/esp32/v5.5.1/esp-idf/components/esp_common C:/esp32/v5.5.1/esp-idf/components/esp_hw_support C:/esp32/v5.5.1/esp-idf/components/esp_rom C:/esp32/v5.5.1/esp-idf/components/esp_security C:/esp32/v5.5.1/esp-idf/components/esp_system C:/esp32/v5.5.1/esp-idf/components/esptool_py C:/esp32/v5.5.1/esp-idf/components/freertos C:/esp32/v5.5.1/esp-idf/components/hal C:/esp32/v5.5.1/esp-idf/components/log C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/main C:/esp32/v5.5.1/esp-idf/components/bootloader/subproject/components/micro-ecc C:/esp32/v5.5.1/esp-idf/components/newlib C:/esp32/v5.5.1/esp-idf/components/partition_table C:/esp32/v5.5.1/esp-idf/components/soc C:/esp32/v5.5.1/esp-idf/components/spi_flash C:/esp32/v5.5.1/esp-idf/components/xtensa -- Configuring done (18.4s) -- Generating done (0.3s) -- Build files have been written to: D:/ESP32/1/build/bootloader [1075/1082] Performing build step for 'bootloader' [1/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/util.c.obj [2/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/util.c.obj [3/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_longjmp.S.obj [4/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_crc.c.obj [5/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_lock.c.obj [6/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_timestamp_common.c.obj [7/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_format_text.c.obj [8/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log_print.c.obj [9/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_efuse.c.obj [10/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/log.c.obj [11/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/noos/log_timestamp.c.obj [12/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_gpio.c.obj [13/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_systimer.c.obj [14/123] Building C object esp-idf/log/CMakeFiles/__idf_log.dir/src/buffer/log_buffers.c.obj [15/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_sys.c.obj [16/123] Building ASM object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_writeback_esp32s3.S.obj [17/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_uart.c.obj [18/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_spiflash.c.obj [19/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_wdt.c.obj [20/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_print.c.obj [21/123] Building C object esp-idf/esp_rom/CMakeFiles/__idf_esp_rom.dir/patches/esp_rom_cache_esp32s2_esp32s3.c.obj [22/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/esp_memory_utils.c.obj [23/123] Linking C static library esp-idf\log\liblog.a [24/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/cpu_region_protect.c.obj [25/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/cpu.c.obj [26/123] Building C object esp-idf/esp_common/CMakeFiles/__idf_esp_common.dir/src/esp_err_to_name.c.obj [27/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/esp_cpu_intr.c.obj [28/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/chip_info.c.obj [29/123] Building C object esp-idf/esp_system/CMakeFiles/__idf_esp_system.dir/esp_err.c.obj [30/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_table.c.obj [31/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_rtc_calib.c.obj [32/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk_init.c.obj [33/123] Linking C static library esp-idf\esp_rom\libesp_rom.a [34/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_fields.c.obj [35/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_sleep.c.obj [36/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_time.c.obj [37/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/esp32s3/esp_efuse_utility.c.obj [38/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_api.c.obj [39/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_init.c.obj [40/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_fields.c.obj [41/123] Building C object esp-idf/esp_hw_support/CMakeFiles/__idf_esp_hw_support.dir/port/esp32s3/rtc_clk.c.obj [42/123] Linking C static library esp-idf\esp_common\libesp_common.a [43/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_mem.c.obj [44/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/efuse_controller/keys/with_key_purposes/esp_efuse_api_key.c.obj [45/123] Building C object esp-idf/efuse/CMakeFiles/__idf_efuse.dir/src/esp_efuse_utility.c.obj [46/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_init.c.obj [47/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random.c.obj [48/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_efuse.c.obj [49/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_random_esp32s3.c.obj [50/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common.c.obj [51/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_common_loader.c.obj [52/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/secure_boot.c.obj [53/123] Linking C static library esp-idf\esp_hw_support\libesp_hw_support.a [54/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_encrypt.c.obj [55/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/flash_partitions.c.obj [56/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_clock_loader.c.obj [57/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_sha.c.obj [58/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash_config_esp32s3.c.obj [59/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/flash_qio_mode.c.obj [60/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console_loader.c.obj [61/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_soc.c.obj [62/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/hal_utils.c.obj [63/123] Building C object esp-idf/esp_bootloader_format/CMakeFiles/__idf_esp_bootloader_format.dir/esp_bootloader_desc.c.obj [64/123] Linking C static library esp-idf\esp_system\libesp_system.a [65/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/bootloader_flash/src/bootloader_flash.c.obj [66/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_console.c.obj [67/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_panic.c.obj [68/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mpu_hal.c.obj [69/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/interrupts.c.obj [70/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/dport_access_common.c.obj [71/123] Building C object esp-idf/spi_flash/CMakeFiles/__idf_spi_flash.dir/spi_flash_wrap.c.obj [72/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/lldesc.c.obj [73/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/efuse_hal.c.obj [74/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/esp32s3/efuse_hal.c.obj [75/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp_image_format.c.obj [76/123] Linking C static library esp-idf\efuse\libefuse.a [77/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_init.c.obj [78/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gpio_periph.c.obj [79/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/dedic_gpio_periph.c.obj [80/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/cache_hal.c.obj [81/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/uart_periph.c.obj [82/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/adc_periph.c.obj [83/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/gdma_periph.c.obj [84/123] Building C object esp-idf/hal/CMakeFiles/__idf_hal.dir/mmu_hal.c.obj [85/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/bootloader_utility.c.obj [86/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdm_periph.c.obj [87/123] Building C object esp-idf/bootloader_support/CMakeFiles/__idf_bootloader_support.dir/src/esp32s3/bootloader_esp32s3.c.obj [88/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rmt_periph.c.obj [89/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/ledc_periph.c.obj [90/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/spi_periph.c.obj [91/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/pcnt_periph.c.obj [92/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/touch_sensor_periph.c.obj [93/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2s_periph.c.obj [94/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/lcd_periph.c.obj [95/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/twai_periph.c.obj [96/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/i2c_periph.c.obj [97/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/temperature_sensor_periph.c.obj [98/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/usb_dwc_periph.c.obj [99/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/timer_periph.c.obj [100/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mcpwm_periph.c.obj [101/123] Generating project_elf_src_esp32s3.c [102/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/mpi_periph.c.obj [103/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/sdmmc_periph.c.obj [104/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/wdt_periph.c.obj [105/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/cam_periph.c.obj [106/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/power_supply_periph.c.obj [107/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/eri.c.obj [108/123] Building C object CMakeFiles/bootloader.elf.dir/project_elf_src_esp32s3.c.obj [109/123] Building C object esp-idf/soc/CMakeFiles/__idf_soc.dir/esp32s3/rtc_io_periph.c.obj [110/123] Building C object esp-idf/xtensa/CMakeFiles/__idf_xtensa.dir/xt_trax.c.obj [111/123] Linking C static library esp-idf\bootloader_support\libbootloader_support.a [112/123] Building C object esp-idf/micro-ecc/CMakeFiles/__idf_micro-ecc.dir/uECC_verify_antifault.c.obj [113/123] Building C object esp-idf/main/CMakeFiles/__idf_main.dir/bootloader_start.c.obj [114/123] Linking C static library esp-idf\esp_bootloader_format\libesp_bootloader_format.a [115/123] Linking C static library esp-idf\spi_flash\libspi_flash.a [116/123] Linking C static library esp-idf\hal\libhal.a [117/123] Linking C static library esp-idf\micro-ecc\libmicro-ecc.a [118/123] Linking C static library esp-idf\soc\libsoc.a [119/123] Linking C static library esp-idf\xtensa\libxtensa.a [120/123] Linking C static library esp-idf\main\libmain.a [121/123] Linking C executable bootloader.elf [122/123] Generating binary image from built executable esptool.py v4.10.0 Creating esp32s3 image... Merged 2 ELF sections Successfully created esp32s3 image. Generated D:/ESP32/1/build/bootloader/bootloader.bin [123/123] C:\WINDOWS\system32\cmd.exe /C "cd /D D:\ESP32\1\build\bootloader\esp-idf\esptool_py && c:\esp32\Espressif\tools\python_env\idf5.5_py3.11_env\Scripts\python.exe C:/esp32/v5.5.1/esp-idf/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 D:/ESP32/1/build/bootloader/bootloader.bin" Bootloader binary size 0x5240 bytes. 0x2dc0 bytes (36%) free. [1080/1082] Linking CXX executable 1.elf FAILED: 1.elf C:\WINDOWS\system32\cmd.exe /C "cd . && C:\esp32\Espressif\tools\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 -nostartfiles -Wl,--cref -Wl,--defsym=IDF_TARGET_ESP32S3=0 -Wl,--Map=D:/ESP32/1/build/1.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.ble_master.ld -T esp32s3.rom.ble_50.ld -T esp32s3.rom.ble_smp.ld -T esp32s3.rom.ble_dtm.ld -T esp32s3.rom.ble_test.ld -T esp32s3.rom.ble_scan.ld -T esp32s3.rom.libc.ld -T esp32s3.rom.newlib.ld -T memory.ld -T sections.ld @CMakeFiles\1.elf.rsp -o 1.elf && cd ." C:/esp32/Espressif/tools/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/main/libmain.a(main.c.obj):(.literal.app_main+0x0): undefined reference to `OLED_Init' C:/esp32/Espressif/tools/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/main/libmain.a(main.c.obj): in function `app_main': D:/ESP32/1/main/main.c:13:(.text.app_main+0x8): undefined reference to `OLED_Init' collect2.exe: error: ld returned 1 exit status ninja: build stopped: subcommand failed.
11-27
Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值