Aktualisierung von Lua NuGet 5.4.8 und Spaß mit Clang RC

Lua 5.4.8 ist hier!
Und so war es also wieder einmal an der Zeit, das NuGet-Paket zu bauen. Zu meiner Überraschung schlug die Erstellung mit Clang als Werkzeugkette unerwartet fehl:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stdarg.h(22): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stdarg.h(22): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stddef.h(22): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stddef.h(22): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stddef.h(51): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\Llvm\lib\clang\19\include\stddef.h(51): warning RC4067: unexpected characters following '#if/#elif' directive; newline expected [D:\a\nuget-lua\nuget-lua\compiler\compiler.vcxproj]
Ich suchte online nach den Compilerfehlern und ob es kürzlich Änderungen an Clang oder der Visual Studio Integration oder so etwas gab. Aber ich fand nichts. Ich habe versucht, die vorherige Version von Lua in meiner GitHub-Aktion zu bauen, und das ist auch fehlgeschlagen.
Und nach einigen Minuten habe ich endlich den wichtigen Teil bemerkt! Das sind KEINE c/cpp-Compiler-Fehler! Das sind RESOURCE COMPILER-Fehler!
Ich baue alle Binärdateien, d.h. den Lua-Compiler, den Lua-Interpreter und die Lua-DLL-Version, mit eingebauten Versionsinformationen. Und das Ressourcenskript dafür enthält den c-Header lua.h,
um die in dieser Datei definierten Versionsinformationen zu verwenden. Da es sich auch um einen normalen c-Header handelt, enthält er natürlich weitere Dateien, darunter die stdarg.h
und stddef.h
, die die obigen Fehler auslösen.
Ich vermute, dass in diesen Systemheadern und im Cpp-Compiler einige Optimierungen vorgenommen wurden, die sich im Resource-Compiler nicht widerspiegeln. Und ich mache niemandem einen Vorwurf daraus, da der Ressource-Compiler ohnehin etwas Exotisches ist und man nicht wirklich erwarten kann, dass er vollständig mit Cpp kompatibel ist.
Das Skript für die Versionsinfo-Ressourcen wird für diese Projekte trotzdem generiert. Ich habe dieses Problem also behoben, indem ich lua.h nicht mehr in den Versionsinfo-Header aufgenommen habe, sondern alle benötigten Defines dupliziert habe. Nur für den Fall, dass Sie (oder mein vergessliches zukünftiges Ich 😉) auch bei anderen Projekten auf ähnliche Probleme stoßen.
Und so gibt es nun auch das neue NuGet-Paket von Lua.
Schreibe einen Kommentar