MinGW/VS2019 VSCode setup. https://github.com/lakehu/hello.git

博客给出了Git代码链接,展示了launch.json文件的配置内容,用于gdb调试。同时记录了gdb调试过程中的日志信息,包括线程创建、库卸载等情况,最后程序退出并给出退出代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sample Code/Git 

Refer to  https://github.com/lakehu/hello.git

 

launch.json

   {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
         /// Manually win32/gcc -ggdb Hello.c to generate a.exe
            "program": "${workspaceFolder}/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
         /// important to set MinGW DLL in Windows PATH    
            "environment": [
                {
                    "name": "PATH",
                    "value": "%PATH%;C:\\MinGW\\gdb32\\bin;C:\\MinGW\\mingw32\\bin;C:\\MinGW\\usr\\bin;C:\\MinGW\\mingw32\\bin"

                }
            ],
            "externalConsole": true,
            "MIMode": "gdb",
        /// Set GDB 
            "miDebuggerPath": "C:\\MinGW\\gdb32\\bin\\gdb32.exe",

            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

============>   Log   
=thread-group-added,id="i1"
GNU gdb (GDB) 7.9.1
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
=cmd-param-changed,param="pagination",value="off"
[New Thread 11216.0x4504]
[New Thread 11216.0x1340]
[New Thread 11216.0x4b00]
[New Thread 11216.0x513c]
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\privman32.dll",target-name="C:\\WINDOWS\\SysWOW64\\privman32.dll",host-name="C:\\WINDOWS\\SysWOW64\\privman32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\user32.dll",target-name="C:\\WINDOWS\\SysWOW64\\user32.dll",host-name="C:\\WINDOWS\\SysWOW64\\user32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\win32u.dll",target-name="C:\\WINDOWS\\SysWOW64\\win32u.dll",host-name="C:\\WINDOWS\\SysWOW64\\win32u.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\gdi32.dll",target-name="C:\\WINDOWS\\SysWOW64\\gdi32.dll",host-name="C:\\WINDOWS\\SysWOW64\\gdi32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\gdi32full.dll",target-name="C:\\WINDOWS\\SysWOW64\\gdi32full.dll",host-name="C:\\WINDOWS\\SysWOW64\\gdi32full.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\msvcp_win.dll",target-name="C:\\WINDOWS\\SysWOW64\\msvcp_win.dll",host-name="C:\\WINDOWS\\SysWOW64\\msvcp_win.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\ucrtbase.dll",target-name="C:\\WINDOWS\\SysWOW64\\ucrtbase.dll",host-name="C:\\WINDOWS\\SysWOW64\\ucrtbase.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\shell32.dll",target-name="C:\\WINDOWS\\SysWOW64\\shell32.dll",host-name="C:\\WINDOWS\\SysWOW64\\shell32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\cfgmgr32.dll",target-name="C:\\WINDOWS\\SysWOW64\\cfgmgr32.dll",host-name="C:\\WINDOWS\\SysWOW64\\cfgmgr32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\SHCore.dll",target-name="C:\\WINDOWS\\SysWOW64\\SHCore.dll",host-name="C:\\WINDOWS\\SysWOW64\\SHCore.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\combase.dll",target-name="C:\\WINDOWS\\SysWOW64\\combase.dll",host-name="C:\\WINDOWS\\SysWOW64\\combase.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\windows.storage.dll",target-name="C:\\WINDOWS\\SysWOW64\\windows.storage.dll",host-name="C:\\WINDOWS\\SysWOW64\\windows.storage.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\shlwapi.dll",target-name="C:\\WINDOWS\\SysWOW64\\shlwapi.dll",host-name="C:\\WINDOWS\\SysWOW64\\shlwapi.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\kernel.appcore.dll",target-name="C:\\WINDOWS\\SysWOW64\\kernel.appcore.dll",host-name="C:\\WINDOWS\\SysWOW64\\kernel.appcore.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\powrprof.dll",target-name="C:\\WINDOWS\\SysWOW64\\powrprof.dll",host-name="C:\\WINDOWS\\SysWOW64\\powrprof.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\profapi.dll",target-name="C:\\WINDOWS\\SysWOW64\\profapi.dll",host-name="C:\\WINDOWS\\SysWOW64\\profapi.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\ole32.dll",target-name="C:\\WINDOWS\\SysWOW64\\ole32.dll",host-name="C:\\WINDOWS\\SysWOW64\\ole32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\imm32.dll",target-name="C:\\WINDOWS\\SysWOW64\\imm32.dll",host-name="C:\\WINDOWS\\SysWOW64\\imm32.dll",thread-group="i1"
[New Thread 11216.0x4418]
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\netapi32.dll",target-name="C:\\WINDOWS\\SysWOW64\\netapi32.dll",host-name="C:\\WINDOWS\\SysWOW64\\netapi32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\logoncli.dll",target-name="C:\\WINDOWS\\SysWOW64\\logoncli.dll",host-name="C:\\WINDOWS\\SysWOW64\\logoncli.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\netutils.dll",target-name="C:\\WINDOWS\\SysWOW64\\netutils.dll",host-name="C:\\WINDOWS\\SysWOW64\\netutils.dll",thread-group="i1"
[New Thread 11216.0x4c44]
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\Wldap32.dll",target-name="C:\\WINDOWS\\SysWOW64\\Wldap32.dll",host-name="C:\\WINDOWS\\SysWOW64\\Wldap32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\ws2_32.dll",target-name="C:\\WINDOWS\\SysWOW64\\ws2_32.dll",host-name="C:\\WINDOWS\\SysWOW64\\ws2_32.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\mswsock.dll",target-name="C:\\WINDOWS\\SysWOW64\\mswsock.dll",host-name="C:\\WINDOWS\\SysWOW64\\mswsock.dll",thread-group="i1"
[New Thread 11216.0x4180]
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\dsparse.dll",target-name="C:\\WINDOWS\\SysWOW64\\dsparse.dll",host-name="C:\\WINDOWS\\SysWOW64\\dsparse.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\kerberos.dll",target-name="C:\\WINDOWS\\SysWOW64\\kerberos.dll",host-name="C:\\WINDOWS\\SysWOW64\\kerberos.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\msasn1.dll",target-name="C:\\WINDOWS\\SysWOW64\\msasn1.dll",host-name="C:\\WINDOWS\\SysWOW64\\msasn1.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\cryptdll.dll",target-name="C:\\WINDOWS\\SysWOW64\\cryptdll.dll",host-name="C:\\WINDOWS\\SysWOW64\\cryptdll.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\bcrypt.dll",target-name="C:\\WINDOWS\\SysWOW64\\bcrypt.dll",host-name="C:\\WINDOWS\\SysWOW64\\bcrypt.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\wshqos.dll",target-name="C:\\WINDOWS\\SysWOW64\\wshqos.dll",host-name="C:\\WINDOWS\\SysWOW64\\wshqos.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\WSHTCPIP.DLL",target-name="C:\\WINDOWS\\SysWOW64\\WSHTCPIP.DLL",host-name="C:\\WINDOWS\\SysWOW64\\WSHTCPIP.DLL",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\wship6.dll",target-name="C:\\WINDOWS\\SysWOW64\\wship6.dll",host-name="C:\\WINDOWS\\SysWOW64\\wship6.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\dnsapi.dll",target-name="C:\\WINDOWS\\SysWOW64\\dnsapi.dll",host-name="C:\\WINDOWS\\SysWOW64\\dnsapi.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\nsi.dll",target-name="C:\\WINDOWS\\SysWOW64\\nsi.dll",host-name="C:\\WINDOWS\\SysWOW64\\nsi.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\IPHLPAPI.DLL",target-name="C:\\WINDOWS\\SysWOW64\\IPHLPAPI.DLL",host-name="C:\\WINDOWS\\SysWOW64\\IPHLPAPI.DLL",thread-group="i1"
=library-unloaded,id="C:\\Program Files (x86)\\Bonjour\\mdnsNSP.dll",target-name="C:\\Program Files (x86)\\Bonjour\\mdnsNSP.dll",host-name="C:\\Program Files (x86)\\Bonjour\\mdnsNSP.dll",thread-group="i1"
=library-unloaded,id="C:\\Windows\\SysWOW64\\rasadhlp.dll",target-name="C:\\Windows\\SysWOW64\\rasadhlp.dll",host-name="C:\\Windows\\SysWOW64\\rasadhlp.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\FWPUCLNT.DLL",target-name="C:\\WINDOWS\\SysWOW64\\FWPUCLNT.DLL",host-name="C:\\WINDOWS\\SysWOW64\\FWPUCLNT.DLL",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\samcli.dll",target-name="C:\\WINDOWS\\SysWOW64\\samcli.dll",host-name="C:\\WINDOWS\\SysWOW64\\samcli.dll",thread-group="i1"
=library-unloaded,id="C:\\WINDOWS\\SysWOW64\\samlib.dll",target-name="C:\\WINDOWS\\SysWOW64\\samlib.dll",host-name="C:\\WINDOWS\\SysWOW64\\samlib.dll",thread-group="i1"

Breakpoint 1, main () at Hello.c:6
6        printf("Hello world!\n");
gdb: unknown target exception 0xc0000008 at 0x3333e7a

Program received signal ?, Unknown signal.
0x77b9f6fc in ntdll!ZwClose () from C:\WINDOWS\SYSTEM32\ntdll.dll
Execute debugger commands using "-exec <command>", for example "-exec info registers" will list registers in use (when GDB is the debugger)


[New Thread 11216.0x4c20]
[Thread 11216.0x4c44 exited with code 3221225480]
[Thread 11216.0x513c exited with code 3221225480]
[Thread 11216.0x4b00 exited with code 3221225480]
[Thread 11216.0x1340 exited with code 3221225480]
[Thread 11216.0x4418 exited with code 3221225480]
[Thread 11216.0x4180 exited with code 3221225480]
[Inferior 1 (process 11216) exited with code 030000000010]
The program 'C:\Lake\CrossPlatform\CodeBlocks\Hello\src\a.exe' has exited with code 0 (0x00000000).
 

这里是报的什么错,PS D:\mywork\mycode\ku> g++ main.cpp -o t1 D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x19): undefined reference to `Marvels::Infra::CLogger::getLevel() const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x3f): undefined reference to `Marvels::Infra::CLogger::getLevel() const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x78): undefined reference to `Marvels::Infra::CLogger::log(Marvels::Infra::LogLevel, char const*, int, char const*, char const*, ...) const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x9d): undefined reference to `Marvels::Infra::CMd5::CMd5()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xa9): undefined reference to `Marvels::Infra::CMd5::init()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x107): undefined reference to `Marvels::Infra::CMd5::update(unsigned char const*, unsigned long long)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x117): undefined reference to `Marvels::Infra::CMd5::final(unsigned char*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x14b): undefined reference to `Marvels::Infra::CMd5::hex(char*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x19a): undefined reference to `Marvels::Infra::CMd5::~CMd5()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x1ce): undefined reference to `Marvels::Infra::CMd5::~CMd5()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x2b5): undefined reference to `Marvels::Infra::base64Encode(char*, char const*, int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x34b): undefined reference to `Marvels::Infra::base64Decode(char*, char const*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x3c4): undefined reference to `Marvels::Infra::CMutex::CMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x43c): undefined reference to `Marvels::Infra::CMutex::~CMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x45e): undefined reference to `Marvels::Infra::CMutex::~CMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x488): undefined reference to `Marvels::Infra::CRecursiveMutex::CRecursiveMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x4d8): undefined reference to `Marvels::Infra::CRecursiveMutex::~CRecursiveMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x4fa): undefined reference to `Marvels::Infra::CRecursiveMutex::~CRecursiveMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x524): undefined reference to `Marvels::Infra::CReadWriteMutex::CReadWriteMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x5b8): undefined reference to `Marvels::Infra::CReadWriteMutex::~CReadWriteMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x5eb): undefined reference to `Marvels::Infra::CReadWriteMutex::~CReadWriteMutex()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x63c): undefined reference to `Marvels::Infra::CSemaphore::signal()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x65f): undefined reference to `Marvels::Infra::CSemaphore::CSemaphore(int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x683): undefined reference to `Marvels::Infra::CSemaphore::wait()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x6cf): undefined reference to `Marvels::Infra::CSemaphore::~CSemaphore()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x6f1): undefined reference to `Marvels::Infra::CSemaphore::~CSemaphore()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x734): undefined reference to `Marvels::Infra::CWaitGroup::done()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x76c): undefined reference to `Marvels::Infra::CWaitGroup::done()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x78a): undefined reference to `Marvels::Infra::CWaitGroup::CWaitGroup()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x7a2): undefined reference to `Marvels::Infra::CWaitGroup::add(int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x7ee): undefined reference to `Marvels::Infra::CWaitGroup::wait()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x86b): undefined reference to `Marvels::Infra::CWaitGroup::~CWaitGroup()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x89e): undefined reference to `Marvels::Infra::CWaitGroup::~CWaitGroup()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x97f): undefined reference to `Marvels::Infra::CStrParser::CStrParser(char const*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x992): undefined reference to `Marvels::Infra::CStrParser::locateString(char const*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x9d6): undefined reference to `Marvels::Infra::CStrParser::~CStrParser()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0x9e7): undefined reference to `Marvels::Infra::CStrParser::~CStrParser()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xa70): undefined reference to `Marvels::Infra::StrConv::trim(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xade): undefined reference to `Marvels::Infra::StrConv::toUpper(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xbac): undefined reference to `Marvels::Infra::CTime::getCurrentTime()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xbcc): undefined reference to `Marvels::Infra::CTime::format(char*, char const*, int) const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xc33): undefined reference to `Marvels::Infra::version()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xc85): undefined reference to `Marvels::Infra::CSockAddr::CSockAddr(char const*, unsigned short)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xcb1): undefined reference to `Marvels::Infra::CSockAddr::getIp[abi:cxx11]() const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xce4): undefined reference to `Marvels::Infra::CSockAddr::getPort() const' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xd1e): undefined reference to `Marvels::Infra::CSockAddr::~CSockAddr()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xd43): undefined reference to `Marvels::Infra::CSockAddr::~CSockAddr()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xdbd): undefined reference to `Marvels::Infra::CThread::CThread(char const*, unsigned int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xde3): undefined reference to `Marvels::Infra::CThread::start(std::function<void (void*)>, void*)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xdf9): undefined reference to `Marvels::Infra::CThread::sleep(unsigned int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xe05): undefined reference to `Marvels::Infra::CThread::stop()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xe11): undefined reference to `Marvels::Infra::CThread::~CThread()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xe33): undefined reference to `Marvels::Infra::CThread::~CThread()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xedb): undefined reference to `Marvels::Infra::CThreadPool::instance()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xef0): undefined reference to `Marvels::Infra::CThreadPool::start(int)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xf13): undefined reference to `Marvels::Infra::CThreadPool::run(std::function<int ()>)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xf42): undefined reference to `Marvels::Infra::CThreadPool::run(std::function<int ()>)' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text+0xf5a): undefined reference to `Marvels::Infra::CThreadPool::stop()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra6CGuardC1ERNS0_6CMutexE[_ZN7Marvels5Infra6CGuardC1ERNS0_6CMutexE]+0x26): undefined reference to `Marvels::Infra::CMutex::enter()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra6CGuardD1Ev[_ZN7Marvels5Infra6CGuardD1Ev]+0x17): undefined reference to `Marvels::Infra::CMutex::leave()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra15CRecursiveGuardC1ERNS0_15CRecursiveMutexE[_ZN7Marvels5Infra15CRecursiveGuardC1ERNS0_15CRecursiveMutexE]+0x26): undefined reference to `Marvels::Infra::CRecursiveMutex::enter()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra15CRecursiveGuardD1Ev[_ZN7Marvels5Infra15CRecursiveGuardD1Ev]+0x17): undefined reference to `Marvels::Infra::CRecursiveMutex::leave()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra13CGuardReadingC1ERNS0_15CReadWriteMutexE[_ZN7Marvels5Infra13CGuardReadingC1ERNS0_15CReadWriteMutexE]+0x26): undefined reference to `Marvels::Infra::CReadWriteMutex::enterReading()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra13CGuardReadingD1Ev[_ZN7Marvels5Infra13CGuardReadingD1Ev]+0x17): undefined reference to `Marvels::Infra::CReadWriteMutex::leave()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra13CGuardWritingC1ERNS0_15CReadWriteMutexE[_ZN7Marvels5Infra13CGuardWritingC1ERNS0_15CReadWriteMutexE]+0x26): undefined reference to `Marvels::Infra::CReadWriteMutex::enterWriting()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.text$_ZN7Marvels5Infra13CGuardWritingD1Ev[_ZN7Marvels5Infra13CGuardWritingD1Ev]+0x17): undefined reference to `Marvels::Infra::CReadWriteMutex::leave()' D:/apply/Vscode/MSYS2/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\sdses\AppData\Local\Temp\ccaRyBMI.o:main.cpp:(.rdata$.refptr._ZN7Marvels5Infra7gloggerE[.refptr._ZN7Marvels5Infra7gloggerE]+0x0): undefined reference to `Marvels::Infra::glogger' collect2.exe: error: ld returned 1 exit status PS D:\mywork\mycode\ku>
07-11
<think>我们正在解决一个编译错误:undefined reference to `Marvels::Infra::CLogger::getLevel() const` 以及其他类似的undefined reference错误。 这种错误通常发生在链接阶段,表示编译器在编译各个源文件时没有找到函数或变量的定义。可能的原因包括: 1. 函数声明了但没有定义(即只有头文件中有函数声明,但没有对应的实现)。 2. 定义了函数但没有被链接到(例如,没有将对应的源文件或库加入链接)。 3. 函数定义在了源文件中,但该源文件没有被编译或链接。 4. 函数定义和声明不匹配(例如,const修饰符不一致,函数名、参数列表或命名空间不一致等)。 根据错误信息,我们特别关注`Marvels::Infra::CLogger::getLevel() const`这个函数。 解决步骤: 1. 检查头文件中是否声明了`getLevel() const`函数。 例如,在头文件(比如CLogger.h)中应该有类似: namespace Marvels { namespace Infra { class CLogger { public: // ... 其他成员函数 int getLevel() const; // 注意这里的const }; } } 2. 检查对应的源文件(比如CLogger.cpp)中是否实现了这个函数。 实现应该类似于: int Marvels::Infra::CLogger::getLevel() const { // 实现代码 } 注意:必须确保函数签名完全一致,包括const修饰符、命名空间、类名、函数名和参数列表。 3. 检查源文件(CLogger.cpp)是否被编译并生成了目标文件(.o文件),并且该目标文件是否被链接到最终的可执行文件或库中。 在构建脚本(如Makefile)中,确保CLogger.cpp在编译列表中,并且链接阶段包含了对应的目标文件。 4. 如果使用了库,确保链接时指定了正确的库路径和库名。 5. 如果函数定义在另一个库中,检查是否在链接时指定了该库。 6. 检查是否有多个版本的库,可能链接了错误版本的库。 7. 如果是模板类,注意模板的实现通常需要放在头文件中。 8. 如果函数是内联函数,则定义必须放在头文件中。 9. 检查函数定义是否在条件编译指令中,可能因为条件不满足而没有编译。 10. 如果函数是静态成员函数,确保在源文件中定义了静态成员(如果静态成员是变量)。 针对这个具体的错误,我们重点检查: - 函数`getLevel() const`是否在CLogger.cpp中定义。 - 编译时是否编译了CLogger.cpp。 - 链接时是否包含了CLogger.o(或类似的目标文件)。 另外,如果还有其他undefined reference错误,也需要逐一检查这些函数是否正确定义和链接。 如果项目使用CMake,确保在CMakeLists.txt中添加了所有源文件,例如: add_library(your_library CLogger.cpp ...) 如果使用g++直接编译,确保在链接时包含了所有目标文件: g++ -o your_program main.o CLogger.o ... 如果问题仍然存在,可以尝试清理项目并重新构建,因为可能是旧的编译结果导致的问题。 如果上述步骤都检查无误,那么可能是函数定义和声明有细微的差别,比如: - 声明为const但定义没有const(或者相反)。 - 函数名拼写错误(大小写、下划线等)。 - 参数类型或数量不一致。 因此,请仔细核对函数声明和定义是否完全一致。 最后,如果错误涉及多个函数,那么可能是整个类(CLogger)的实现没有被正确编译和链接,因此需要检查整个类的实现文件。 希望这些步骤能帮助你解决问题。</think>### 编译错误 `undefined reference` 的原因与解决方法 您遇到的 `undefined reference to Marvels::Infra::CLogger::getLevel() const` 错误是典型的**链接阶段错误**,表示编译器在编译后的目标文件中找不到该函数的实现。以下是系统性的分析和解决方案: --- ### **根本原因分析** 1. **函数未实现** - 头文件(`.h`)中声明了 `getLevel() const` 函数,但对应的源文件(`.cpp`)中**缺少实现**。 - 示例头文件声明: ```cpp // CLogger.h namespace Marvels::Infra { class CLogger { public: int getLevel() const; // 声明 }; } ``` - 若 `CLogger.cpp` 中未定义 `int CLogger::getLevel() const { ... }`,则链接失败。 2. **编译/链接遗漏** - 包含 `getLevel()` 实现的源文件未被编译,或生成的目标文件(`.o`)**未链接到最终程序**。 - 常见于构建系统配置错误(如 CMake/Makefile 漏掉源文件)。 3. **符号不匹配** - 函数签名在声明和实现间存在**细微差异**,例如: - 声明为 `const` 但实现未加 `const` - 命名空间不一致(如 `Marvels::Infra` vs `Infra`) - 参数类型或数量不一致 4. **静态库链接问题** - 若 `CLogger` 位于静态库(`.a`)中: - 库未正确链接(如 `g++` 未加 `-l` 参数) - 库的编译选项不匹配(如 C++11 vs C++17) --- ### **解决方案步骤** #### 1. **检查函数实现** - 在 `CLogger.cpp` 中确认存在**完全匹配**的实现: ```cpp // CLogger.cpp #include "CLogger.h" int Marvels::Infra::CLogger::getLevel() const { return level; // 实现代码 } ``` - **关键细节**: - 函数名、参数、`const` 修饰符、命名空间必须与声明**完全一致**。 - 使用 `nm -gC lib.a | grep getLevel` 检查目标文件/库中是否存在符号(注意 `const` 会生成类似 `getLevel() const` 的修饰名)。 #### 2. **验证构建配置** - **CMake**:确保源文件被添加到目标: ```cmake add_library(InfraLib CLogger.cpp) # 包含实现文件 target_link_libraries(YourProject InfraLib) ``` - **Makefile**:检查依赖项: ```makefile OBJS = CLogger.o Other.o YourProgram: $(OBJS) g++ -o $@ $^ ``` #### 3. **检查链接顺序** - 静态库链接需按**依赖顺序排列**(被依赖的库放在后面): ```bash g++ main.o -lInfraLib -lOtherLib # 依赖层级低的库在后 ``` #### 4. **处理跨模块问题** - 若 `CLogger` 在动态库(`.so`)中: - 确保编译时用 `-fPIC` 生成位置无关代码。 - 运行时需配置 `LD_LIBRARY_PATH` 指向库路径。 #### 5. **清理并重新构建** - 删除所有生成文件(`make clean` 或删除 `build/` 目录),避免旧对象文件干扰。 --- ### **预防措施** 1. **头文件/实现同步** - 使用 IDE 或 LSP 工具(如 Clangd)实时检测声明-实现不一致。 2. **单元测试隔离** - 对 `CLogger` 类编写单元测试,独立验证其编译和链接。 3. **构建系统检查** - 在 CMake 中启用 `--warn-unused-vars` 检查未使用的源文件。 > 通过以上步骤,95% 的 `undefined reference` 错误可被解决。若问题仍存在,建议提供 `CLogger.h`/`CLogger.cpp` 和构建脚本片段进一步分析[^1]。 --- ### 相关问题 1. 如何用 `nm` 或 `objdump` 工具分析目标文件中的符号? 2. C++ 链接过程中静态库和动态库的区别是什么? 3. 如何避免 C++ 项目中的跨模块符号冲突? 4. CMake 中如何正确管理多模块项目的依赖关系? [^1]: 编译错误分析的效率依赖于对构建过程和符号解析的深入理解,这与优化底层系统性能的数学原理同样关键。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值