扫码关注官方订阅号
同一个动态链接库可以被加载多次吗?使用System.loadLibrary()如果可以,因为我用的C库代码不是线程安全的,可以通过一个线程加载一次而实现线程安全吗?
System.loadLibrary()
认证0级讲师
测试了,不能。测试代码:cpp入口代码:
static int testflag = 0; extern "C" JNIEXPORT jint JNICALL Java_com_example_speexserver_codec_Speex_getDecodeFrameSize( JNIEnv * env, jobject obj) { if(testflag == 0) testflag += 1; else if(testflag == 1) testflag += 1; return (jint)testflag; }
Java端部分代码:
public void init() { load(); open(DEFAULT_COMPRESSION); System.out.println("Speex inited"); } private void load() { try { System.loadLibrary("libSpeex"); } catch (Throwable e) { e.printStackTrace(); } }
Java测试代码:
public static void main(String[] args) { Speex speexA = new Speex(); speexA.init(); System.out.println(speexA.getDecodeFrameSize()); Speex speexB = new Speex(); speexB.init(); System.out.println(speexB.getDecodeFrameSize()); }
结果:
Speex inited 1 Speex inited 2
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
测试了,不能。
测试代码:
cpp入口代码:
Java端部分代码:
Java测试代码:
结果: