java.lang.UnsatisfiedLinkError Отображение функций C ++ в JNA

Я должен сопоставить нативную библиотеку C ++ с JNA, это заголовок библиотеки:

#ifndef WORMDLL_H
#define WORMDLL_H

#pragma once#ifdef WORMDLL_EXPORTS
#define WORMDLL_API __declspec(dllexport)
#else
#define WORMDLL_API __declspec(dllimport)
#endif

#include "wormError.h"
typedef BYTE WORM_DATA;

WORMDLL_API WORM_ERROR  worm_readData(const char* mountPoint, WORM_DATA *data,const unsigned int offset,const unsigned int numBlocks);
#endif

И это мое отображение, сделанное с помощью JNAeator:

package test;
import com.ochafik.lang.jnaerator.runtime.LibraryExtractor;
import com.ochafik.lang.jnaerator.runtime.MangledFunctionMapper;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import java.nio.ByteBuffer;

public interface TestLibrary extends Library {
public static final String JNA_LIBRARY_NAME = LibraryExtractor.getLibraryPath("test", true, TestLibrary.class);
public static final NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(TestLibrary.JNA_LIBRARY_NAME, MangledFunctionMapper.DEFAULT_OPTIONS);
public static final TestLibrary INSTANCE = (TestLibrary)Native.loadLibrary(TestLibrary.JNA_LIBRARY_NAME, TestLibrary.class, MangledFunctionMapper.DEFAULT_OPTIONS);TestLibrary.WORM_ERROR worm_readData(String mountPoint, ByteBuffer data, int offset, int numBlocks);

public static class WORM_ERROR extends PointerType {
public WORM_ERROR(Pointer address) {
super(address);
}
public WORM_ERROR() {
super();
}
};
}

И это экспортированная функция, найденная DependencyWalker:

(украшен)
введите описание изображения здесь
(Недекорированный)
введите описание изображения здесь

Когда я пытаюсь запустить тест с этой конфигурацией, я получаю:

Исключение в потоке «main» java.lang.UnsatisfiedLinkError: Ошибка
функция поиска ‘worm_readData’

Почему JNA не может найти имена функций?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]