dll 动态调用

knder0000 2011-03-29 04:52:57
HINSTANCE hDllInst = LoadLibrary("averc727api.dll");
if( hDllInst)
{
//LONG WINAPI AVerCreateCaptureObject(DWORD dwDeviceIndex, HWND hWnd, HANDLE* CaptureObject)

typedef LONG (WINAPI *MYFUNC_Object)(DWORD, HWND, HANDLE);
MYFUNC_Object GetVideoSourceHwnd = NULL;
GetVideoSourceHwnd = (MYFUNC_Object)GetProcAddress(hDllInst,"AVerCreateCaptureObject");
if(GetVideoSourceHwnd &&(0==state))
{
state = GetVideoSourceHwnd(0, hd_std, &hdCapture_std);
}

if( GetVideoSourceHwnd &&(0==state))
{
state = GetVideoSourceHwnd(1, hd_tec, &hdCapture_tec);
}

//LONG WINAPI AVerSetVideoSource(HANDLE hCaptureObject, DWORD dwVideoSource)
typedef LONG (WINAPI *MYFUNC_Set)(HANDLE, DWORD);
MYFUNC_Set SetVideoSource = NULL;
SetVideoSource = (MYFUNC_Set)GetProcAddress(hDllInst,"AVerSetVideoSource");
if(SetVideoSource &&(0==state))
{
state = SetVideoSource(hdCapture_std, VIDEOSOURCE_SVIDEO);
}

if( SetVideoSource &&(0==state))
{
state = SetVideoSource(hdCapture_tec, VIDEOSOURCE_SVIDEO);
}
}

FreeLibrary(hDllInst);

编译没问题,但是功能实现不了。各位大侠帮我看看是不是dll的调用有什么问题。谢谢!
...全文
98 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
野男孩 2011-03-29
  • 打赏
  • 举报
回复
什么叫 功能实现不了??如果GetProcAddress没取到导出函数的地址,那么是动态调用DLL的问题。

函数地址都取到了,功能没实现,那就是功能实现的问题,和DLL调用就没关系了。
oyljerry 2011-03-29
  • 打赏
  • 举报
回复
那就是你的DLL函数内部实现有问题,你调试一下DLL的实现
knder0000 2011-03-29
  • 打赏
  • 举报
回复
都成功,我跟踪了,一直到这些执行完,都是没问题的。
//LONG WINAPI AVerCreateCaptureObject(DWORD dwDeviceIndex, HWND hWnd, HANDLE* CaptureObject)

typedef LONG (WINAPI *MYFUNC_Object)(DWORD, HWND, HANDLE);

这个要不要改为
typedef LONG (WINAPI *MYFUNC_Object)(DWORD, HWND, HANDLE*);

oyljerry 2011-03-29
  • 打赏
  • 举报
回复
先看DLL是否路径正确,是否LoadLibrary加载成功,其次看获取函数地址是否成功.GetProcAddress
Jarrylogin 2011-03-29
  • 打赏
  • 举报
回复
看了一下;没看出问题!
是不是DLL路径不对. 放到系统路径下保证装载上就可以了

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧