您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Linux >> Linux用jna 调用so动态库 报错 Error looking up function

Linux用jna 调用so动态库 报错 Error looking up function

来源:网络整理     时间:2016/8/23 0:37:15     关键词:

关于网友提出的“ Linux用jna 调用so动态库 报错 Error looking up function”问题疑问,本网通过在网上对“ Linux用jna 调用so动态库 报错 Error looking up function”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: Linux用jna 调用so动态库 报错 Error looking up function
描述:

 我在服务器上调用 别的同事 用c++写的so库,采用jna调用

Java 代码如下

import com.sun.jna.Library;
import com.sun.jna.Native;

public class TestSo {
	public interface LgetLib extends Library {

		LgetLib INSTANCE = (LgetLib) Native.loadLibrary("helloword", LgetLib.class);

		String print();
	}

	public String print() {
		return LgetLib.INSTANCE.print();
	}

}
c++源码
#include 
#include 

std::string print()
{
        std::string res;
        res= "hello word";
        return res;

}

调用后老是报错

java.lang.UnsatisfiedLinkError: Error looking up function 'print': /usr/lib64/libhelloword.so: undefined symbol: print
	com.sun.jna.Function.(Function.java:129)
	com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:250)
	com.sun.jna.Library$Handler.invoke(Library.java:191)
	com.sun.proxy.$Proxy41.print(Unknown Source)
	com.hshbic.aiTools.controller.device.TestSo.print(TestSo.java:15)
	com.hshbic.aiTools.controller.device.DeviceController.queryModuleTypes(DeviceController.java:25)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	java.lang.reflect.Method.invoke(Method.java:606)
求解,是不是so库编译问题?

解决方案1:

linux的so我不是很熟啊,但在windows上,dll是要声明export的,而且类型最好用char*


以上介绍了“ Linux用jna 调用so动态库 报错 Error looking up function”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3503570.html

相关图片

相关文章