Search code examples
javajavafxmaven-3gluongraalvm

Link Task with Gluon plugin and Graalvm fails


I want to build a native image of my java app for windows 10.

Because I have no expirience in building native image with the graalvm-ce-java11-21.0.0 and Gluon Plug-in for Eclipse 2.8.1, i decided to build first the buildin sample of the "Gluon Mobile - Single View Project". My buildtool is Maven 3.6.3.

Can someone tell me how to solve the following error?

While running mvn client:build on the x64 Native Tools Command Prompt for VS 2019 the build fails cause of "Process link failed with result: 1120"

The complete log:

[Sa. Jan. 30 17:12:03 MEZ 2021][INFO] ==================== LINK TASK ====================
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] Looking for resource: /native/windows/launcher.c
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] PB Command for compile-additional-sources: cl -c -DSUBSTRATE /MD /D_UNICODE /DUNICODE /DWIN32 /D_WINDOWS -IC:\Users\...\SingleViewProject\target\client\x86_64-windows\gvm\SingleViewProject launcher.c
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] Start process compile-additional-sources...
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] [SUB] Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x64
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] [SUB] Copyright (C) Microsoft Corporation. All rights reserved.
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] [SUB]
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] [SUB] launcher.c
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] Result for compile-additional-sources: 0
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] PB Command for link: link C:\Users\...\SingleViewProject\target\client\x86_64-windows\gvm\SingleViewProject\launcher.obj C:\Users\...\SingleViewProject\target\client\x86_64-windows\gvm\tmp\SVM-1612022981603\com.gluonapplication.gluonapplication.obj advapi32.lib iphlpapi.lib secur32.lib userenv.lib ws2_32.lib j2pkcs11.lib java.lib net.lib nio.lib prefs.lib fdlibm.lib sunec.lib zip.lib ffi.lib jvm.lib libchelper.lib /NODEFAULTLIB:libcmt.lib /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup comdlg32.lib dwmapi.lib gdi32.lib imm32.lib shell32.lib uiautomationcore.lib urlmon.lib winmm.lib glass.lib javafx_font.lib javafx_iio.lib prism_common.lib prism_d3d.lib /WHOLEARCHIVE:glass.lib /WHOLEARCHIVE:javafx_font.lib /WHOLEARCHIVE:javafx_iio.lib /WHOLEARCHIVE:prism_common.lib /WHOLEARCHIVE:prism_d3d.lib /OUT:C:\Users\...\SingleViewProject\target\client\x86_64-windows\SingleViewProject.exe /LIBPATH:C:\Users\....gluon\substrate\javafxStaticSdk\16-ea+gvm24\windows-x86_64\sdk\lib /LIBPATH:C:\Program Files\Java\graalvm-ce-java11-21.0.0\lib\svm\clibraries\windows-amd64 /LIBPATH:C:\Program Files\Java\graalvm-ce-java11-21.0.0\lib\static\windows-amd64
[Sa. Jan. 30 17:12:03 MEZ 2021][FINE] Start process link...
[Sa. Jan. 30 17:12:03 MEZ 2021][INFO] [SUB] Microsoft (R) Incremental Linker Version 14.28.29336.0
[Sa. Jan. 30 17:12:03 MEZ 2021][INFO] [SUB] Copyright (C) Microsoft Corporation. All rights reserved.
[Sa. Jan. 30 17:12:03 MEZ 2021][INFO] [SUB]
[Sa. Jan. 30 17:12:04 MEZ 2021][INFO] [SUB] Creating library C:\Users\...\SingleViewProject\target\client\x86_64-windows\SingleViewProject.lib and object C:\Users\...\SingleViewProject\target\client\x86_64-windows\SingleViewProject.exp
[Sa. Jan. 30 17:12:04 MEZ 2021][INFO] [SUB] com.gluonapplication.gluonapplication.obj : error LNK2001: unresolved external symbol GetFileVersionInfoSizeW
[Sa. Jan. 30 17:12:04 MEZ 2021][INFO] [SUB] com.gluonapplication.gluonapplication.obj : error LNK2001: unresolved external symbol GetFileVersionInfoW
[Sa. Jan. 30 17:12:04 MEZ 2021][INFO] [SUB] com.gluonapplication.gluonapplication.obj : error LNK2001: unresolved external symbol VerQueryValueW
[Sa. Jan. 30 17:12:04 MEZ 2021][INFO] [SUB] C:\Users\...\SingleViewProject\target\client\x86_64-windows\SingleViewProject.exe : fatal error LNK1120: 3 unresolved externals
[Sa. Jan. 30 17:12:04 MEZ 2021][FINE] Result for link: 1120
[Sa. Jan. 30 17:12:04 MEZ 2021][SEVERE] Process link failed with result: 1120

pom.xml:

<modelVersion>4.0.0</modelVersion>

<groupId>com.gluonapplication</groupId>
<artifactId>singleviewproject</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>SingleViewProject</name>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>11</maven.compiler.release>
    <javafx.version>15.0.1</javafx.version>
    <attach.version>4.0.10</attach.version>
    <client.plugin.version>0.1.35</client.plugin.version>
    <javafx.plugin.version>0.0.5</javafx.plugin.version>
    <mainClassName>com.gluonapplication.GluonApplication</mainClassName>
</properties>

<dependencies>
    <dependency>
        <groupId>org.openjfx</groupId>
        <artifactId>javafx-controls</artifactId>
        <version>${javafx.version}</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq</groupId>
        <artifactId>charm-glisten</artifactId>
        <version>6.0.6</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq.attach</groupId>
        <artifactId>display</artifactId>
        <version>${attach.version}</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq.attach</groupId>
        <artifactId>lifecycle</artifactId>
        <version>${attach.version}</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq.attach</groupId>
        <artifactId>statusbar</artifactId>
        <version>${attach.version}</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq.attach</groupId>
        <artifactId>storage</artifactId>
        <version>${attach.version}</version>
    </dependency>
    <dependency>
        <groupId>com.gluonhq.attach</groupId>
        <artifactId>util</artifactId>
        <version>${attach.version}</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>Gluon</id>
        <url>https://nexus.gluonhq.com/nexus/content/repositories/releases</url>
    </repository>
</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
        </plugin>

        <plugin>
            <groupId>org.openjfx</groupId>
            <artifactId>javafx-maven-plugin</artifactId>
            <version>${javafx.plugin.version}</version>
            <configuration>
                <mainClass>${mainClassName}</mainClass>
            </configuration>
        </plugin>

        <plugin>
            <groupId>com.gluonhq</groupId>
            <artifactId>client-maven-plugin</artifactId>
            <version>${client.plugin.version}</version>
            <configuration>
                <target>${client.target}</target>
                <attachList>
                    <list>display</list>
                    <list>lifecycle</list>
                    <list>statusbar</list>
                    <list>storage</list>
                </attachList>
                <mainClass>${mainClassName}</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

<profiles>
    <profile>
        <id>desktop</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <client.target>host</client.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>com.gluonhq.attach</groupId>
                <artifactId>display</artifactId>
                <version>${attach.version}</version>
                <classifier>desktop</classifier>
            </dependency>
            <dependency>
                <groupId>com.gluonhq.attach</groupId>
                <artifactId>lifecycle</artifactId>
                <version>${attach.version}</version>
                <classifier>desktop</classifier>
            </dependency>
            <dependency>
                <groupId>com.gluonhq.attach</groupId>
                <artifactId>storage</artifactId>
                <version>${attach.version}</version>
                <classifier>desktop</classifier>
            </dependency>
        </dependencies>
    </profile>
    <profile>
        <id>ios</id>
        <properties>
            <client.target>ios</client.target>
        </properties>
    </profile>
    <profile>
        <id>android</id>
        <properties>
            <client.target>android</client.target>
        </properties>
    </profile>
</profiles>

Solution

  • As José Pereda wrote the solution is: Change the client.plugin.version to 0.1.36