level 1
蓝冰_不想长大
楼主
我用MFC做了一个winform程序,用于打开摄像头和拍照等功能。之前编译成EXE的时候可以正常运行,后来编译成DLL文件供JAVA调用时程序打不开窗体了。具体代码如下:
C++中对外(JAVA)的接口代码如下:
JNIEXPORT jobjectArray JNICALL Java_com_building_view_dialog_CameraDll_uploadPicture
(JNIEnv * env, jobject obj, jstring code, jstring path, jstring filename){
codec = jstringToWindows(env,code);
pathc = jstringToWindows(env,path);
filenamec = jstringToWindows(env,filename);
CcapVideoDlg dlg;
dlg.DoModal();
jobjectArray args = 0;
jsize len = 5;
jclass objClass = (env)->FindClass("java/lang/Object");
args = (env)->NewObjectArray(len, objClass, 0);
jstring jstr = WindowsTojstring(env,b);
jstring name = WindowsTojstring(env,picname);
(env)->SetObjectArrayElement(args, 0, jstr);
(env)->SetObjectArrayElement(args, 1, name);
return args;
}
程序中断的位置:
m_hCapWnd=capCreateCaptureWindow(
(LPTSTR)TEXT("视频捕捉测试窗口"),
WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,
0,0,rect.Width(),rect.Height(),
pWnd->GetSafeHwnd(),0);
ASSERT(m_hCapWnd);
AfxMessageBox(_T("启动!"));
if(capDriverConnect(m_hCapWnd,0))
{
AfxMessageBox(_T("123123123!"));
m_bInit=TRUE;
capDriverGetCaps(m_hCapWnd,&m_CapDrvCap,sizeof(CAPDRIVERCAPS));
经过测试,以上程序在JAVA中运行能运行到初始化函数,能打印出来“启动”,但是不能打印出来“123123123!”,是capdriverconnect函数的问题吧?请问有没有懂得大神,求指点。
2014年11月06日 06点11分
1
C++中对外(JAVA)的接口代码如下:
JNIEXPORT jobjectArray JNICALL Java_com_building_view_dialog_CameraDll_uploadPicture
(JNIEnv * env, jobject obj, jstring code, jstring path, jstring filename){
codec = jstringToWindows(env,code);
pathc = jstringToWindows(env,path);
filenamec = jstringToWindows(env,filename);
CcapVideoDlg dlg;
dlg.DoModal();
jobjectArray args = 0;
jsize len = 5;
jclass objClass = (env)->FindClass("java/lang/Object");
args = (env)->NewObjectArray(len, objClass, 0);
jstring jstr = WindowsTojstring(env,b);
jstring name = WindowsTojstring(env,picname);
(env)->SetObjectArrayElement(args, 0, jstr);
(env)->SetObjectArrayElement(args, 1, name);
return args;
}
程序中断的位置:
m_hCapWnd=capCreateCaptureWindow(
(LPTSTR)TEXT("视频捕捉测试窗口"),
WS_CHILD|WS_VISIBLE|WS_EX_CLIENTEDGE|WS_EX_DLGMODALFRAME,
0,0,rect.Width(),rect.Height(),
pWnd->GetSafeHwnd(),0);
ASSERT(m_hCapWnd);
AfxMessageBox(_T("启动!"));
if(capDriverConnect(m_hCapWnd,0))
{
AfxMessageBox(_T("123123123!"));
m_bInit=TRUE;
capDriverGetCaps(m_hCapWnd,&m_CapDrvCap,sizeof(CAPDRIVERCAPS));
经过测试,以上程序在JAVA中运行能运行到初始化函数,能打印出来“启动”,但是不能打印出来“123123123!”,是capdriverconnect函数的问题吧?请问有没有懂得大神,求指点。