Код: Выделить всё
import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.WString;
public class Main {
public interface JNITestInterface extends StdCallLibrary {
JNITestInterface inst = (JNITestInterface) Native.load("C:\\Users\\Rajan Dhiman\\Desktop\\Projects\\StringProc1.dll", JNITestInterface.class);
WString ProcessString(WString input);
}
public static void main(String[] args) {
WString inp = new WString("Rajan");
WString output = JNITestInterface.inst.ProcessString(inp);
System.out.println("The answer we get in Java -> " + output.toString());
}
}
Код файла StringProc1: -
Код: Выделить всё
using System;
using System.Runtime.InteropServices;
using StringProc2;
namespace StringProc1
{
public class StringProcessor
{
[DllExport("ProcessString", CallingConvention = CallingConvention.StdCall)\]
public static string ProcessString(string input)
{
string processedString = input.ToUpper();
Console.WriteLine($"Step 1 - Uppercase: {processedString}");
processedString = StringModifier.ModifyString(processedString);
Console.WriteLine($"Step 3 - Reversed: {processedString}");
return processedString;
}
}
}
Код: Выделить всё
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StringProc2
{
public class StringModifier
{
public static string ModifyString(string input)
{
// Reverse the input string
char charArray = input.ToCharArray();
Array.Reverse(charArray);
string modifiedString = new string(charArray);
Console.WriteLine($"Step 2 - Modify (Reverse): {modifiedString}");
return modifiedString;
}
}
}
Код: Выделить всё
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:500)
at com.sun.jna.Function.invokeString(Function.java:663)
at com.sun.jna.Function.invoke(Function.java:439)
at com.sun.jna.Function.invoke(Function.java:364)
at com.sun.jna.Library$Handler.invoke(Library.java:270)
at jdk.proxy1/jdk.proxy1.$Proxy0.ProcessString(Unknown Source)
at Main.main(Main.java:18)
/>Я пытался найти решение, но безуспешно.
Кто-нибудь может мне с этим помочь?
Подробнее здесь: https://stackoverflow.com/questions/791 ... s-from-dll
Мобильная версия