当我尝试使用LoadLibrary
加载DLL时,句柄不为空,但GetLastError
返回14007。
有任何想法吗?
MSDN说:
ERROR_SXS_KEY_NOT_FOUND
14007 (0x36B7)
The requested lookup key was not found in any active activation context
HMODULE handle = LoadLibrary(“mydll.dll”); r = GetLastError(); 如果(!手柄) 返回0;
答案 0 :(得分:-1)
错误代码并不总是在成功时重置。
首先,要确定函数调用是否成功,请遵循文档中提到的语义。在这种情况下,LoadLibrary
是否返回有效句柄。
您已表明确实如此,因此GetLastError
的结果无关紧要。这可能是某些之前的调用失败的结果。
来自the GetLastError
documentation:
返回值是调用线程的最后错误代码。
设置最后错误代码的每个函数的文档的返回值部分说明了函数设置最后错误代码的条件。设置线程的最后错误代码的大多数函数在失败时设置它。但是,某些函数在成功时也会设置最后一个错误代码。 如果没有记录该函数来设置最后错误代码,则此函数返回的值只是已设置的最新最后错误代码;某些函数在成功时将最后一个错误代码设置为0,而其他函数则不会。
我在the LoadLibrary
documentation中看不到任何暗示错误代码在成功时设置为0的内容,这意味着它在您的情况下毫无意义。