在Windows XP上的Java应用程序(JRE 1.7.0_21),我调用本地方法:应用程序崩溃的调用JNI模式对话框
public native String getImage(...);
...这是一个Visual C++ 10.0 DLL 。这将显示一个模式对话框。在显示对话框之前,我正确地将对话框的父句柄设置为java应用程序窗口,在此窗口的顶部将弹出此对话框。
问题是我的应用程序崩溃,只要在此函数中调用DoModal()。如果我把父窗口的句柄留为空,那么对话框就会正常工作而不会崩溃。只有当设置句柄到父窗口Java应用程序崩溃。
如果我在dll part/jni中缺少某些东西,请告诉我。
发布更多代码,特别是:如何设置对话框对象并指定父对象。你如何管理你的DLL的AFX_MODULE_STATE。此外,更准确地说“崩溃”。如果在崩溃之前将调试器附加到Java进程并让它发生,你会发现什么? – manuell
该DLL是MFC扩展DLL。当我在导出的函数中添加AFX_MANAGE_STATE(AfxGetStaticModuleState())时,出现'mfcs100ud.lib(dllmodul.obj):错误LNK2005:_DllMain @ 12已在myproj.obj中定义错误。在以下文章[链接] http://translate.googleusercontent.com/translate_c?depth=1&hl=hi&rurl=translate.google.co.in&sl=zh-CN&tl=zh-CN&u=http://blog.csdn .net/eulb/article/details/2580958&usg = ALkJrhiwFcu6z-sA8Ng0QNvvqHys1_tkOQ [/ link]但无效。 –
使用dll的调试版本,调试进入DoModal()调用时,调用失败了AfxGetResourceHandle()在afxwin1.inl文件中的断言。 –