用于视频编码的Java类加载包含C ++代码的DLL
Unpacking debugging symbols for VideoSource.dll to \path
Checking for VideoSource.pdb...
Checking for videosource.pdb...
然后尝试从该DLL实例化本机(C ++)类:
// VideoSource() is implemented in C++ and wrapped with JNI,
// wrapper files were generated with SWIG
_videoProvider = new generated.VideoSource();
当Java类作为JUnit测试执行时(视频数据被提取),这是有效的。
当我将Java类作为OSGi服务启动时,同样的事情不起作用。
基本上,执行相同的代码。 DLL仍然成功加载,但上面显示的本机(C ++)类的实例化现在抛出异常:
java.lang.UnsatisfiedLinkError: generated.VideoSourceSWIGJNI.new_VideoSource()J
当我将Java类作为OSGi服务启动而不是将其作为JUnit测试执行时有何不同?我该怎么做才能让它发挥作用?
的背景
generated.VideoSource()是
public VideoSource() {
this(VideoSourceSWIGJNI.new_VideoSource(), true);
}
VideoSourceSWIGJNI.new_VideoSource()
public final static native long new_VideoSource();
C ++实现
VideoSource::VideoSource() {
// init frame count
m_frame_cnt = 0;
[..]
}