C++ 中LoadLibrary()加载DLL失败


我用vs 2005 新建了一个DLL工程,然后此DLL工程里面需要调用一个外部DLL文件中的函数,代码如下:

   
  JNIEXPORT jint JNICALL Java_nc_ui_mes_video_SAA7134_getDeviceNum
  
(JNIEnv *env, jclass jobject)
{
int num = 0;
printf("getDeviceNum:WWW1111111111111111111111111111111111111\n");
HINSTANCE hDllInst = LoadLibrary("C:/Windows/System32/Sa7134Capture.dll");
printf("getDeviceNum:222222222222222222222222222222222\n");
if(hDllInst){
printf("getDeviceNum:333333333333333333333333333\n");
typedef DWORD (WINAPI *MYFUNC)();
MYFUNC getDevNum = NULL;

getDevNum = (MYFUNC)GetProcAddress(hDllInst,"VCAGetDevNum");// youFuntionName是在DLL中声明的函数名
printf("getDeviceNum:44444444444444444444\n");
if(getDevNum)

{
printf("getDeviceNum:55555555555555555555555555\n");
num= getDevNum();
printf("getDeviceNum:666666666666666666666666666666\n");
}
printf("getDeviceNum:777777777777777777777777777777\n");

}
printf("getDeviceNum:888888888888888888888888888888888\n");
FreeLibrary(hDllInst);
return num;

}

HINSTANCE hDllInst = LoadLibrary("C:/Windows/System32/Sa7134Capture.dll");这行的返回结果是NULL,加载这个DLL文件失败,错误:找不到指定的模块,但是这个DLL文件是存在的,而且与他依赖的其它DLL文件也都放在一起。为什么会加载失败呢?

dll VC

巫女巫女早苗 12 years, 11 months ago
   
  LoadLibrary("C:/Windows/System32/Sa7134Capture.dll");
 

改为下面的试试

   
  LoadLibrary(TEXT("C:\\Windows\\System32\\Sa7134Capture.dll"));
 

另外你的dll不能有其他的dependence,如果有要在一起

一航戦D誇り answered 12 years, 11 months ago

Your Answer