我有一个使用wxWidgets构建的相对复杂的GUI应用程序,我可以在MSVC上编译并正常运行,但是当我在Visual Studio中使用LLVM编译时,我出现了 "manifestdependency: is not allowed in .drectve "错误。
这个错误已经被报告了,这里似乎有一个解决方法 https:/bugs.llvm.orgshow_bug.cgi?id=38797。然而,我似乎不明白我需要如何修改我的代码。在错误报告中,它提到了如何在PCH文件中放置指令,但我在我的解决方案中没有使用预编译的头文件。我可以使用LLVM构建项目,其中我没有包含wx头和库,所以我怀疑这与wxWidget的编译方式有关。
我对wxWidget的编译方式不太熟悉,有人能给点建议吗?
通过上述链接
事在人为 意见 这对我来说是有效的(添加 case OPT_manifestdependency: 至 lldCOFFDriver.cpp).
$ git diff
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp
index 7372505bb61..f8afbb93374 100644
--- a/lld/COFF/Driver.cpp
+++ b/lld/COFF/Driver.cpp
@@ -408,6 +408,7 @@ void LinkerDriver::parseDirectives(InputFile *file) {
// `#pragma comment(linker, "/flag")`-generated sections.
case OPT_editandcontinue:
case OPT_guardsym:
+ case OPT_manifestdependency:
case OPT_throwingnew:
break;
default:
花了一段时间编译llvm lld,但最后错误信息是 "错误:manifestdependency: is not allowed in .drectve" 消失了。但是wxWidgets看起来不一样了。"wxWidgetsincludewxmswamd64_dpi_aware.manifest" 和 cmake 中的 target_sources。这样我就解决了外观不同的问题 (比如字体模糊)。