jna调用c++的dll,dll中函数入参为std::String 该如何模拟(附接口代码)

泽木楠不楠的小抱枕 2018-04-18 01:52:56
class Detector {
public:
Detector(std::string cfg_filename, std::string weight_filename, int gpu_id = 0);
~Detector();

std::vector<bbox_t> detect(std::string image_filename, float thresh = 0.2, bool use_mean = false);
std::vector<bbox_t> detect(image_t img, float thresh = 0.2, bool use_mean = false);
static image_t load_image(std::string image_filename);
static void free_image(image_t m);

#ifdef OPENCV
std::vector<bbox_t> detect(cv::Mat mat, float thresh = 0.2, bool use_mean = false);
#endif
};


如上,我想在java中利用jna使用这个dll,
JNATestDll instanceDll = (JNATestDll)Native.loadLibrary("D:\\BaiduNetdiskDownload\\darknet-master\\darknet-master\\build\\darknet\\x64\\yolo_cpp_dll.dll",JNATestDll.class);
void Detector(String cfg_filename, String weight_filename, int use_mean);

出错如下
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'Detector': 找不到指定的程序。
...全文
1190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
神!! 2020-01-19
  • 打赏
  • 举报
回复
大佬,请问std::vector 在JNA里如何转换呐
一米阳光zw 2019-07-29
  • 打赏
  • 举报
回复



引用 1 楼 oyljerry 的回复:
最好用C再封装C++一层。用char*等,java就可以传入String转换


大神能说的详细点吗,我在java中调用int参数类型方法是可以正常运行的,但是string参数或者char*类型都报错
  • 打赏
  • 举报
回复
不封装没法用吗?
oyljerry 2018-04-18
  • 打赏
  • 举报
回复
最好用C再封装C++一层。用char*等,java就可以传入String转换

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧