Jvm linking problem on Mingw
Hello, i am using MSYS2 mingw, with gcc 7.2.0, cmake 3.10, Windows 7 my CMakeLists.txt:
find_package(Java 1.6 REQUIRED)
find_package(JNI REQUIRED)
include(UseJava)
add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS})
target_include_directories(
${PROJECT_NAME}
PUBLIC
${HEADERS_DIR}
${JNI_INCLUDE_DIRS}
)
message(INFO " JNI_LIBRARIES = ${JNI_LIBRARIES}")
message(INFO " JAVA_JVM_LIBRARY = ${JAVA_JVM_LIBRARY}")
message(INFO " JNI_FOUND = ${JNI_FOUND}")
target_link_libraries(${PROJECT_NAME} PUBLIC Threads::Threads hana ${JAVA_JVM_LIBRARY} )
Configuration output:
"C:\Program Files\CMake\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MAKE_PROGRAM=C:/msys64/mingw64/bin/make.exe -DCMAKE_C_COMPILER=C:/msys64/mingw64/bin/gcc.exe -DCMAKE_CXX_COMPILER=C:/msys64/mingw64/bin/g++.exe -G "CodeBlocks - MinGW Makefiles" D:\libs\cppJNI
-- The C compiler identification is GNU 7.2.0
-- The CXX compiler identification is GNU 7.2.0
-- Check for working C compiler: C:/msys64/mingw64/bin/gcc.exe
-- Check for working C compiler: C:/msys64/mingw64/bin/gcc.exe -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe
-- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
INFO##################################
INFO##### Welcome into MyUtils #####
INFO##################################
INFO MinGW Makefiles here
INFO CMAKE_FIND_LIBRARY_SUFFIXES=.dll;.dll.a;.a;.lib
INFO CMAKE_FIND_LIBRARY_SUFFIXES=.dll;.dll.a;.a;.lib
INFO CMAKE_GENERATOR_TOOLSET=
INFO##################################
-- cotire 1.7.10 loaded.
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found Java: C:/Program Files (x86)/Java/jdk1.8.0_112/bin/java.exe (found suitable version "1.8.0_112", minimum required is "1.6")
-- Found JNI: C:/Program Files (x86)/Java/jdk1.8.0_112/lib/jawt.lib
INFO JNI_LIBRARIES = C:/Program Files (x86)/Java/jdk1.8.0_112/lib/jawt.lib;C:/Program Files (x86)/Java/jdk1.8.0_112/lib/jvm.lib
INFO JAVA_JVM_LIBRARY = C:/Program Files (x86)/Java/jdk1.8.0_112/lib/jvm.lib
INFO JNI_FOUND = TRUE
-- Found Java: C:/Program Files (x86)/Java/jdk1.8.0_112/bin/java.exe (found version "1.8.0_112")
-- Found GTest: C:/lib/mingw/lib/libgtest.dll.a (Required is at least version "1.8")
INFO GTEST_FOUND=TRUE
-- Configuring done
-- Generating done
-- Build files have been written to: D:/libs/cppJNI/cmake-build-release
[Finished]
So CMake see all required libraries, but 'undefined reference' occurs when i'm linking static lib with my executable. Why is that happening? Thanks! Kind regards
Edited by Piotr Wera