Проблема Java JNI cmake [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Проблема Java JNI cmake [закрыто]

Сообщение Anonymous »

У меня есть простая Java-программа, которая вызывает собственный метод, который, в свою очередь, вызывает std::cout.

Я компилирую ее с помощью:

Код: Выделить всё

clang -I $ENV:JAVA_HOME\include -I $ENV:JAVA_HOME\include\win32 .\Main.c -o Main.o
clang -shared -o Main.dll .\Main.o
Скомпилированный таким образом, он работает правильно и ошибок не возникает.
Однако я также использую CMake для компиляции кода.

Мой CMakeLists.txt выглядит следующим образом:

Код: Выделить всё

cmake_minimum_required(VERSION 4.0)
project(something CXX)

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_C_STANDARD 11)
set(CMAKE_BUILD_TYPE RELEASE)
set(LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/mylib")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/mylib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_SOURCE_DIR}/mylib")

include_directories(build)
include_directories(build/generated)
include_directories(build/generated/sources)
include_directories(build/generated/sources/headers)
include_directories(build/generated/sources/headers/java)
include_directories(build/generated/sources/headers/java/main)
include_directories($ENV{JAVA_HOME}/include)
include_directories($ENV{JAVA_HOME}/include/win32)

add_library(something SHARED
build/generated/sources/headers/java/main/org_qmained_Main.h
something.cpp)
Он работает правильно, если не используется «внешняя» библиотека.
функции типа printf работают, но на std::vector или std::cout завершается с ошибкой:

Указанная процедура не найдена

В чем может быть причина этой ошибки?
UPD: Выяснили причину данной ошибки. Мой путь MinGW находился под другими путями. Я переместил MinGW g++ в самый верх переменной среды моего пути, ошибка была исправлена.

Подробнее здесь: https://stackoverflow.com/questions/798 ... make-issue
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»