我试图通过JAVA应用程序调用DLL文件中的函数。 我找到了这个来源http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/,一切都像魅力一样。
但是,我希望对DLL文件进行一些修改,我希望函数从源代码返回String而不是char。
这是我的java代码。
public class Main {
public interface simpleDLL extends Library {
simpleDLL INSTANCE = (simpleDLL) Native.loadLibrary("simpleDLL", simpleDLL.class);
int giveIntGetInt(int a); // int giveIntGetInt(int a);
}
public static void main(String[] args) {
simpleDLL sdll = simpleDLL.INSTANCE;
String result = sdll.giveCharGetChar("abc");
System.out.println("result: " + result);
int a = 3;
int result1 = sdll.giveIntGetInt(a); // calling function with int parameter&result
System.out.println("giveIntGetInt("+a+"): " + result1);
}
}
这是我的C ++代码。
#include "simpleDLL.h"
#include <string>
#include <stdexcept>
using namespace std;
using std::string;
namespace simpleDLLNS
{
string simpleDLL::giveCharGetChar(string a)
{
return "abc";
}
int simpleDLL::giveIntGetInt(int a)
{
return 3*a;
}
void simpleDLL::simpleCall(void)
{
int x = 3;
return;
}
int simpleDLL::giveVoidPtrGetInt(void* param)
{
if(param!=0)
{
int* x = (int*)param;
return *x;
}
else
{
return -1;
}
}
}
除此之外,如果我将我的String更改为char,它会返回我的韩语单词。如果我使用String,Java将会出错。请帮忙。
答案 0 :(得分:0)
请参阅此示例,了解如何将字符串发送到C库并使用Java中的JNA从C库接收字符串: