分类: WINDOWS
2010-06-02 20:38:24
为新博客做个链接:
OpenCV在VS2005下开发的工程,需要依赖OpenCV的几个dll文件,在<%OpenCV_HOME%>\bin目录下,由于是隐式调用,在没有安装OpenCV的机器上运行的程序的时候会遇到dll文件无法加载的问题,弄了很久,最后终于找出解决方案,使用延迟加载的方法,步骤如下:
1. 项目菜单 - 属性, 在属性页对话框里, 在"配置属性" - "链接器" - "输入"页中的"延迟加载的Dll"一项中, 填入自己的Dll的名字., 注意: 这里Debug版和Release版都需要进行设置
2. 将如下代码加入,并在程序初始化的地方调用:
BOOL CSmartGestureApp::DelayLoadHelper(LPCTSTR szAppendedPath)
{
TCHAR sgCurPath[1024];
ZeroMemory(sgCurPath, sizeof(sgCurPath));
GetModuleFileName(NULL,sgCurPath,sizeof(sgCurPath)/sizeof(TCHAR));
CString sgModulePath = sgCurPath;
sgModulePath = sgModulePath.Left(sgModulePath.ReverseFind('\\'));
sgDllPath.Format(_T("%s%s"),sgModulePath,_T("你要加载的dll的路径"));
SetDllDirectory((LPCWSTR)sgDllPath);
return TRUE;
}
该段代码主要是指定dll的搜索目录为程序安装路径下的某个目录