前言
前一篇提到用JNA调用C++编译的dll,可以成功映射int类型。
遇到“字符串”的映射,官网提供的java端的String类型可以mapping C端的char类型,但实际操作发现,作为方法的参数可以映射,但是java端用String接收dll返回的char数据,会乱码,不管接收的是中文还是英文。
正文
当接收dll返回值是字符串类型时,应该用 Pointer 和 void* 去传递。
C++端代码(代码中有注释)
#include "pch.h"
#include <string>
#include <iostream>
#include <cstdio>
using namespace std;
extern "C" _declspec(dllexport) void* add( char* a, void* buf);
//返回void*类型,用char*接收java端String类型的数据a,另外再用void*类型接收java端Pointer类型的数据
void* add(char* a,