首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LoadLibrary冻结

LoadLibrary冻结
EN

Stack Overflow用户
提问于 2011-03-10 16:19:40
回答 1查看 3.8K关注 0票数 4

我已经编译了一个JNI,我希望使用System.loadLibrary将它加载到我的Java应用程序中。这在Windows和使用MSVC++ 2008Express编译的dll上非常好。

但是,在Windows7上,我使用MSVC++ 2010 Express (相同的选项、相同的处理器架构、相同的Java、不同的操作系统和编译器)编译dll,应用程序将冻结在loadLibrary调用上。没有错误信息,根本没有反应。当我在冻结的进程上尝试jstack时,它也会冻结(没有输出,没有终止)。以管理员身份运行应用程序不会解决此问题。

DLL及其所有依赖项都在java.library.path中。实际上,当我删除它们时,Java应用程序会告诉我它们丢失了,所以dll肯定已经被正确初始化了,其他的东西也失败了。然而,调试证明,它实际上是loadLibrary冻结,之后什么都没有。

有人能告诉我这里会发生什么事吗?

更新

正如我在下面的评论中所说,这个问题似乎更深。使用一个简单的C程序来加载所述DLL的依赖项之一已经导致冻结,所以这肯定是Windows和MSVC++如何链接DLL的某种问题( MSVC++ 2010 Express也链接了该依赖项)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-11 18:44:01

您的DLL几乎可以肯定地调用一些尝试从其DLLMain()内部获取加载程序锁的东西。

您所描述的是所谓的死锁,这些症状非常适合这个特定的问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5262552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档