在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文件中的斷言。 –