错误记录
莫名奇妙new、delete关键字相关的错误¶
- 在Source里的源文件最好加
\#include "config.h",不然很可能报错(但其实这个只是很烦人的垃圾错误报告,但最好还是加) - 注意是源文件而不是头文件,注意模块下得有这个(比如Source/WebKit/config.h)
language设置排查¶
\#include "WebCore/ProcessIdentifier.h"
\#include <wtf/RuntimeApplicationChecks.h>
printf("[NavigatorBase] ::language, cpid=%s(%s), pid=%d, language=%s\n", Process::identifier().loggingString().utf8().data(),
WTF::processTypeDescription(WTF::processType()).characters(),
WTF::getCurrentProcessID(), defaultLanguage().utf8().data());
编译Debug¶
[9212/9212] Linking CXX executable bin\Playwright.exe
FAILED: [code=4294967295] bin/Playwright.exe
C:\Windows\system32\cmd.exe /C "cd . && D:\softwares\miseroot\data\installs\cmake\3.29.9\cmake-3.29.9-windows-x86_64\bin\cmake.exe -E vs_link_exe --intdir=Tools\Playwright\win\CMakeFiles\Playwright.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\LLVM\bin\lld-link.exe /nologo Tools\Playwright\win\CMakeFiles\Playwright.dir\Common.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\MainWindow.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\PlaywrightLib.rc.res Tools\Playwright\win\CMakeFiles\Playwright.dir\WebKitBrowserWindow.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\WinMain.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\stdafx.cpp.obj /out:bin\Playwright.exe /implib:lib\Playwright.lib /pdb:bin\Playwright.pdb /version:0.0 /machine:x64 /STACK:8388608 /debug /INCREMENTAL /subsystem:windows /DEBUG /OPT:NOICF /OPT:REF /INCREMENTAL:NO "C:\Program Files\LLVM\lib\clang\20\lib\windows\clang_rt.builtins-x86_64.lib" comctl32.lib shlwapi.lib user32.lib crypt32.lib lib\WebKit2.lib lib\WebCore.lib crypt32.lib lib\Skia.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebpmux.lib vcpkg_installed\x64-windows-webkit\debug\lib\icudtd.lib vcpkg_installed\x64-windows-webkit\debug\lib\icuind.lib vcpkg_installed\x64-windows-webkit\debug\lib\icuucd.lib DbgHelp.lib shlwapi.lib synchronization.lib winmm.lib lib\JavaScriptCore.lib ws2_32.lib wsock32.lib lib\libEGL.lib vcpkg_installed\x64-windows-webkit\debug\lib\jpeg.lib vcpkg_installed\x64-windows-webkit\debug\lib\libpng16d.lib vcpkg_installed\x64-windows-webkit\debug\lib\zlibd.lib vcpkg_installed\x64-windows-webkit\debug\lib\sqlite3.lib vcpkg_installed\x64-windows-webkit\debug\lib\libxslt.lib vcpkg_installed\x64-windows-webkit\debug\lib\libxml2.lib lib\libGLESv2.lib "C:\Program Files\LLVM\lib\clang\20\lib\windows\clang_rt.builtins-x86_64.lib" vcpkg_installed\x64-windows-webkit\debug\lib\lcms2.lib vcpkg_installed\x64-windows-webkit\debug\lib\woff2dec.lib vcpkg_installed\x64-windows-webkit\debug\lib\libcurl_imp.lib vcpkg_installed\x64-windows-webkit\debug\lib\psl.lib vcpkg_installed\x64-windows-webkit\debug\lib\ssl.lib vcpkg_installed\x64-windows-webkit\debug\lib\crypto.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebpdemux.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebp.lib vcpkg_installed\x64-windows-webkit\debug\lib\jxl.lib vcpkg_installed\x64-windows-webkit\debug\lib\harfbuzz.lib vcpkg_installed\x64-windows-webkit\debug\lib\harfbuzz-icu.lib iphlpapi.lib usp10.lib vcpkg_installed\x64-windows-webkit\debug\lib\brotlidec.lib vcpkg_installed\x64-windows-webkit\debug\lib\woff2common.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && C:\Windows\system32\cmd.exe /C "cd /D D:\mwk\WebKitBuild\Debug\Tools\Playwright\win && C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noprofile -executionpolicy Bypass -file "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/vcpkg/scripts/buildsystems/msbuild/applocal.ps1" -targetBinary D:/mwk/WebKitBuild/Debug/bin/Playwright.exe -installedDir D:/mwk/WebKitBuild/Debug/vcpkg_installed/x64-windows-webkit/debug/bin -OutVariable out""
LINK: command "C:\PROGRA~1\LLVM\bin\lld-link.exe /nologo Tools\Playwright\win\CMakeFiles\Playwright.dir\Common.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\MainWindow.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\PlaywrightLib.rc.res Tools\Playwright\win\CMakeFiles\Playwright.dir\WebKitBrowserWindow.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\WinMain.cpp.obj Tools\Playwright\win\CMakeFiles\Playwright.dir\stdafx.cpp.obj /out:bin\Playwright.exe /implib:lib\Playwright.lib /pdb:bin\Playwright.pdb /version:0.0 /machine:x64 /STACK:8388608 /debug /INCREMENTAL /subsystem:windows /DEBUG /OPT:NOICF /OPT:REF /INCREMENTAL:NO C:\Program Files\LLVM\lib\clang\20\lib\windows\clang_rt.builtins-x86_64.lib comctl32.lib shlwapi.lib user32.lib crypt32.lib lib\WebKit2.lib lib\WebCore.lib crypt32.lib lib\Skia.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebpmux.lib vcpkg_installed\x64-windows-webkit\debug\lib\icudtd.lib vcpkg_installed\x64-windows-webkit\debug\lib\icuind.lib vcpkg_installed\x64-windows-webkit\debug\lib\icuucd.lib DbgHelp.lib shlwapi.lib synchronization.lib winmm.lib lib\JavaScriptCore.lib ws2_32.lib wsock32.lib lib\libEGL.lib vcpkg_installed\x64-windows-webkit\debug\lib\jpeg.lib vcpkg_installed\x64-windows-webkit\debug\lib\libpng16d.lib vcpkg_installed\x64-windows-webkit\debug\lib\zlibd.lib vcpkg_installed\x64-windows-webkit\debug\lib\sqlite3.lib vcpkg_installed\x64-windows-webkit\debug\lib\libxslt.lib vcpkg_installed\x64-windows-webkit\debug\lib\libxml2.lib lib\libGLESv2.lib C:\Program Files\LLVM\lib\clang\20\lib\windows\clang_rt.builtins-x86_64.lib vcpkg_installed\x64-windows-webkit\debug\lib\lcms2.lib vcpkg_installed\x64-windows-webkit\debug\lib\woff2dec.lib vcpkg_installed\x64-windows-webkit\debug\lib\libcurl_imp.lib vcpkg_installed\x64-windows-webkit\debug\lib\psl.lib vcpkg_installed\x64-windows-webkit\debug\lib\ssl.lib vcpkg_installed\x64-windows-webkit\debug\lib\crypto.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebpdemux.lib vcpkg_installed\x64-windows-webkit\debug\lib\libwebp.lib vcpkg_installed\x64-windows-webkit\debug\lib\jxl.lib vcpkg_installed\x64-windows-webkit\debug\lib\harfbuzz.lib vcpkg_installed\x64-windows-webkit\debug\lib\harfbuzz-icu.lib iphlpapi.lib usp10.lib vcpkg_installed\x64-windows-webkit\debug\lib\brotlidec.lib vcpkg_installed\x64-windows-webkit\debug\lib\woff2common.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST:EMBED,ID=1" failed (exit code 1) with the following output:
lld-link: error: undefined symbol: private: static bool WTF::RefCountDebugger::areThreadingChecksEnabledGlobally
>>> referenced by D:\mwk\WebKitBuild\Debug\WTF\Headers\wtf\RefCountDebugger.h:123
>>> Tools\Playwright\win\CMakeFiles\Playwright.dir\WebKitBrowserWindow.cpp.obj:(public: void __cdecl WTF::RefCountDebugger::applyRefDerefThreadingCheck(unsigned int, enum WTF::RefCountIsThreadSafe) const)
>>> referenced by Tools\Playwright\win\CMakeFiles\Playwright.dir\WinMain.cpp.obj
lld-link: error: undefined symbol: public: static class WTF::StringImpl::StaticStringImpl WTF::StringImpl::s_emptyAtomString
>>> referenced by D:\mwk\WebKitBuild\Debug\WTF\Headers\wtf\text\StringImpl.h:416
>>> Tools\Playwright\win\CMakeFiles\Playwright.dir\WinMain.cpp.obj:(public: static class WTF::StringImpl * __cdecl WTF::StringImpl::empty(void))
ninja: build stopped: subcommand failed.
解决方法¶
Tools\Playwright\win\CMakeLists.txt
## WTF and bmalloc symbols live in JavaScriptCore.dll on Windows. The
## STATICALLY_LINKED_WITH_WTF / STATICALLY_LINKED_WITH_bmalloc definitions
## propagated by WebKit::WTF cause WTF_EXPORT_PRIVATE to expand to
## __declspec(dllexport) instead of __declspec(dllimport), which prevents
## lld-link from resolving the symbols via the JavaScriptCore import library.
## Override them here so the correct dllimport decoration is used.
target_compile_options(Playwright PRIVATE -USTATICALLY_LINKED_WITH_WTF -USTATICALLY_LINKED_WITH_bmalloc)
clangd.exe --check=D:\mwk\Tools\Playwright\win\WinMain.cpp¶
在CompileFlags Add添加 "/clang:-std=c++23", # clangd drops /std:c++latest from clang-cl driver, workaround pass-through to cc1 后,解决了许多std::span/concept/byte 等cpp版本错误