2017-11-22 1 views
1

Ich befolge diese Anleitung auf building V8, aber ich treffe einige Probleme auf den Kompilierungsschritt. Ich verwende Windows 10 x64. Ich versuche mit Optionen zu kompilieren, um die Engine auch einzubetten.LNK1181 Fehler beim Kompilieren von V8-Engine auf Win10

Ausführen den folgenden Befehl ein:

ninja -C out.gn/x64.release

gibt mir diese Fehlermeldung:

ninja: Entering directory `out.gn/x64.release' 
[1/471] LINK mksnapshot.exe mksnapshot.exe.pdb 
FAILED: mksnapshot.exe mksnapshot.exe.pdb 
C:/Workspace/depot_tools/win_tools-2_7_6_bin/python/bin/python.exe ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 False link.exe /nologo /OUT:./mksnapshot.exe /PDB:./mksnapshot.exe.pdb @./mksnapshot.exe.rsp 
LINK : fatal error LNK1181: cannot open input file 'comdlg32.lib' 
ninja: build stopped: subcommand failed. 

Jetzt glaube ich, dass ich den Fehler zu suchen für die .lib Dateien in der verengte unten falsches Verzeichnis Ich hatte (hatte) mehrere Versionen installiert, also gab es mehrere Ordner in meiner Windows Kit-Installation.

Windows Kits/10/Lib/10.0.16299.0
Windows Kits/10/Lib/10.0.15xxx.0

Wenn ich per Drag & Drop die comdlg32.lib Datei aus 10.0.16299.0 in das Verzeichnis 10.0.15xxx.0 dann verändert sich der Fehler auf einem LNK1181 Fehler mit einer anderen Eingabedatei. Ich habe das ein paar Mal gemacht, aber ich war mir nicht sicher, ob dies Probleme mit verschiedenen Versionen verursachen würde und es würde wahrscheinlich eine Menge geben.

ich deinstalliert die 10.0.15xxx.0 Version, die ich erwähnte, hinter dem Ordner gespeichert, so entfernte ich, dass und nach damit ich die LNK1181 Fehler mit einer anderen Eingabedatei (advapi32.lib Ich gehe davon aus, die erste Datei bekommen haben begonnen, finden es nicht). So kam ich zu dem Schluss, dass der Pfad falsch ist.


Also habe ich ein paar Dinge versucht, den Weg zu ändern (ich nur die alte Version zu deinstallieren erhoffte es beheben), wie zB:

  • die alte Version deinstallieren.
  • Gehen Sie durch Registrierungseinträge, um zu sehen, ob ich einen Installationspfad oder etwas finden kann, das diesen Pfad verwendet, was ich nicht getan habe. Ich habe bemerkt, dass es noch Installation und Daten in der Registrierung für die 10.0.15xxx.0 Installation gibt, könnte ich versuchen, das aus der Registrierung direkt als letztes Mittel zu löschen? den Pfad explizit festlegen, indem <TargetUniversalCRTVersion>10.0.16299.0</TargetUniversalCRTVersion> in dieser Datei
  • Ich habe versucht: C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\uCRT.props
  • Ich habe Ninja nie zuvor so habe ich versucht, nach einer Möglichkeit, eine Art von lib-path in dem Befehl zu setzen, aber nicht wirklich finden kann, etwas.
  • Ich schaute durch die Python-Skripte ausgeführt werden, um zu versuchen, etwas zu suchen, um mit dem Pfad libs zu tun, konnte aber nichts sehen.

würde ich für jede Hilfe und Anregungen dankbar. Vielen Dank.

+0

So große Projekte auf Windows zu bauen war schon immer ein großes Durcheinander. Versuchen Sie Linux, Sie werden durch den Build-Prozess. – Ujjwal

+0

Leider versuche ich, die Engine in eine Windows-Anwendung einzubetten, an der ich gerade arbeite. Ich könnte das aber tun, damit ich wenigstens damit herumspielen kann, bis ich es auf Windows kompilieren kann. – notvita

Antwort

0

können Sie versuchen, v8 mit Visual Studio zu kompilieren, wie hier erklärt: https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md#using-the-visual-studio-ide

Durch die folgenden Befehle ausführen:

$ gn gen --ide=vs out.gn/x64.release 
$ cd out.gn/x64.release 
$ msbuild all.sln 

Sie können ein vollständiges Beispiel finden Sie hier: https://github.com/phpv8/v8js/issues/272#issuecomment-262848754

Anscheinend Methode wird nicht mehr offiziell unterstützt, aber ich hatte das gleiche Problem wie du und das hat das Problem für mich gelöst.

Beachten Sie, dass nachdem ich ein anderes Problem hatte, die Komponententests aufgrund eines Verknüpfungsfehlers nicht kompiliert wurden, aber ich hatte die erforderlichen Bibliotheken, um v8 zu verwenden. Es könnte also ein tieferes Problem geben, das all das verursacht, was ich vermisse.

Edit:

Auch könnten Sie versuchen, die folgenden Parameter mit gn args einzustellen:

visual_studio_path = "..." 
visual_studio_version = "2017" 
wdk_path = "..." 
windows_sdk_path = "C:\Program Files (x86)\Windows Kits\10" 

diese Parameter einzustellen, tun:

gn args out.gn/x64.release 

Dies wird mit einem Texteditor öffnen wo Sie die zusätzlichen Parameter schreiben können, an denen Sie interessiert sind.

Um die vollständige Liste der Parameter zu sehen, die Sie angeben können:

Verwandte Themen