Содержимое shuchu dll
Код: Выделить всё
namespace shuchu
{
public class Class1
{
[DllExport("getInfo", CallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl)]
public static String GetInfo() {
return "A1B2C3";
}
}
}
Код: Выделить всё
namespace yinyong
{
public class Ying
{
[DllExport("getShuChuInfo", CallingConvention = CallingConvention.Cdecl)]
public static string GetShuChuInfo()
{
return Class1.GetInfo();
}
[DllExport("getNormalInfo", CallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl)]
public static string GetNormalInfo(string info)
{
return info;
}
}
}
Они все используют в автономном режиме. DllExport. 1.7.4.29 инструменты для создания функций, все библиотеки DLLS 64-разрядные.
Это мой Java-код
Код: Выделить всё
public class NuoWenTest {
private static String basePath = "D:\\WorkSpace\\EclipseWorkSpace\\HC_Exmple\\NuoWen";
public interface NewtonsoftJsonDll extends Library {
NewtonsoftJsonDll INSTANCE = Native.load("shuchu.dll",NewtonsoftJsonDll.class, W32APIOptions.ASCII_OPTIONS);
String getInfo();
}
public interface Dll extends Library {
NewtonsoftJsonDll INSTANCE = NewtonsoftJsonDll.INSTANCE;
Dll dll = (Dll) Native.synchronizedLibrary(Native.load("yinyong.dll", Dll.class, W32APIOptions.ASCII_OPTIONS));
String getShuChuInfo();
String getNormalInfo(String info);
}
public static void main(String[] args) {
System.setProperty("jna.debug_load", "true");
System.setProperty("jna.debug_load.jna", "true");
System.setProperty("jna.library.path", basePath);
System.out.println(System.getProperty("os.arch"));
System.setProperty("jna.encoding", "GBK");
String value = "inputValue";
String normalInfo = Dll.dll.getNormalInfo(value);
System.out.println(normalInfo);
String shuChuInfo = Dll.dll.getShuChuInfo();
System.out.println(shuChuInfo);
}
}
Код: Выделить всё
amd64
一月 10, 2025 1:32:31 下午 com.sun.jna.Native extractFromResourcePath
信息: Looking in classpath from sun.misc.Launcher$AppClassLoader@18b4aac2 for /com/sun/jna/win32-x86-64/jnidispatch.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.Native extractFromResourcePath
信息: Found library resource at jar:file:/D:/maven/localRepository/net/java/dev/jna/jna/5.12.1/jna-5.12.1.jar!/com/sun/jna/win32-x86-64/jnidispatch.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.Native extractFromResourcePath
信息: Extracting library to C:\Users\PC\AppData\Local\Temp\jna-2547\jna7403058685325327933.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.Native loadNativeDispatchLibraryFromClasspath
信息: Trying C:\Users\PC\AppData\Local\Temp\jna-2547\jna7403058685325327933.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.Native loadNativeDispatchLibraryFromClasspath
信息: Found jnidispatch at C:\Users\PC\AppData\Local\Temp\jna-2547\jna7403058685325327933.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Looking for library 'shuchu.dll'
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Adding paths from jna.library.path: D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Trying D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen\shuchu.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Found library 'shuchu.dll' at D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen\shuchu.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Looking for library 'yinyong.dll'
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Adding paths from jna.library.path: D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Trying D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen\yinyong.dll
一月 10, 2025 1:32:31 下午 com.sun.jna.NativeLibrary loadLibrary
信息: Found library 'yinyong.dll' at D:\WorkSpace\EclipseWorkSpace\HC_Exmple\NuoWen\yinyong.dll
inputValue
Exception in thread "main" java.lang.Error: Invalid memory access
at com.sun.jna.Native.invokePointer(Native Method)
at com.sun.jna.Function.invokePointer(Function.java:497)
at com.sun.jna.Function.invokeString(Function.java:660)
at com.sun.jna.Function.invoke(Function.java:434)
at com.sun.jna.Function.invoke(Function.java:361)
at com.sun.jna.Library$Handler.invoke(Library.java:265)
at com.sun.jna.Native$3.invoke(Native.java:1252)
at com.sun.proxy.$Proxy1.getShuChuInfo(Unknown Source)
at com.kaimingyun.iccard.controller.NuoWenTest.main(NuoWenTest.java:37)
Версия Java — 1.8, версия JNA — 5.12. .1 с использованием Windows 11, процессор i7-12700k, 32 ГБ ОЗУ
Думаю, ошибка возникает из-за отношений зависимости, но я прочитал несколько статей, чтобы решить ее без никакого эффекта. И выходная информация в журнале показала, что они были загружены нормально.
Я пытался изменить тип возвращаемого значения метода getShuChuInfo() на WString и Pointer, но они оба вернуть ту же ошибку.
Подробнее здесь: https://stackoverflow.com/questions/793 ... lid-memory
Мобильная версия