LoadLibraryEx GetLastError

咨询个问题:
VS2010中LoadLibraryEx返回的HINSTALLCE正确,并且能执行dll中的接口函数,
dll文件路径是正确的,但是执行LoadLibraryEx后,
为什么GetLastError()会返回错误码2,即ERROR_FILE_NOT_FOUND,
_这个Agent.dll之前是vs2008生成的,现在项目移到vs2010中

TCHAR dll[] = _T("D:\\Project\\trunk\\build\bin\\Debug\\Agent.dll");
int error 1= GetLastError();//error=0
HINSTANCE hLib = LoadLibraryEx(dll, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
int error2 = GetLastError();//error=2???
if (hLib>=(HINSTANCE)HINSTANCE_ERROR)
{
typedef HRESULT (_stdcall *EntryFunc)();
EntryFunc lpDllEntryPoint=NULL;
if(isReg)
{
lpDllEntryPoint = (EntryFunc)GetProcAddress(hLib, "DllRegisterServer");
}
else
{
lpDllEntryPoint = (EntryFunc)GetProcAddress(hLib, "DllUnregisterServer");
}
if(lpDllEntryPoint)
{
if(SUCCEEDED((*lpDllEntryPoint)()))
{
BOOL isOK=TRUE;//能够执行到这里来,loadlibraryEx应该成功了
}
}
FreeLibrary(hLib);
}

ERROR_FILE_NOT_FOUND,文件未找到,dll位置在哪

TCHAR dll[] = T("D:\Project\trunk\build\bin\Debug\Agent.dll");
_上面这个就是dll所在绝对路径

字符串中路径分割符要用双反斜杠,单个是转义符。

楼上正解,\是转义字符,应该写成
TCHAR dll[] = _T("D:\Project\trunk\build\bin\Debug\Agent.dll")

这个DLL路径如果正确的话,是不是DLL本身还有其他依赖,因为缺少依赖而加载不起来
用depends查看一下dll的依赖项

msdn上讲的很清楚,如果返回值是NULL才看GeLastError。你不是NULL的时候,看的GetLastError不一定是对的。可能是前一个错误操作的Error

字符串中路径分割符要用双反斜杠,单个是转义符。