对于为什么这个简单的测试代码会显示WinHttpConnect在错误代码6(无效句柄或ERROR_INVALID_HANDLE)中失败的任何猜测:
HINTERNET internet = WinHttpOpen(L"test",WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,WINHTTP_NO_PROXY_NAME,WINHTTP_NO_PROXY_BYPASS,0);
assert(internet == (HINTERNET)1);
HINTERNET connect = WinHttpConnect(internet,L"www.microsoft.com",INTERNET_DEFAULT_HTTP_PORT,0);
assert(!connect);
DWORD err = GetLastError();
assert(err == 6);以上所有断言都通过了。我已经在我的Win8 PC和Win2003服务器上运行了这段代码。两台不同的电脑,同样的问题。我的原始代码更复杂,以服务的形式运行,但我简化了这段代码,只在用户模式(而不是服务)的一个简单测试应用程序中运行。
我的应用程序是用较旧的编译器Builder 6编译的,但不确定这是否有问题。
发布于 2014-08-12 21:02:10
我已经打好了我的问题,然后就在我发出去之前把这个问题弄清楚了。与其删除或不张贴我的问题,我认为我应该分享这一点,因为我知道其他人仍然使用这个非常老的编译器也:
C++ Builder 6不包括一个WinHTTP.LIB文件,所以我使用了implib来创建一个文件,就像我通常做的那样。在这种情况下,您似乎需要使用-f标志强制它按名称而不是序号导入,否则会得到奇怪的结果。
implib -f winhttp.lib winhttp.dll无论如何,这对我是有效的,现在我的上述代码可以在Win2003服务器和Win8 PC上工作。
对不起,我不知道从哪里得到WinHTTP.h文件,可能是从更新版本的Borland/Inspire编译器中得到的,因为Microsoft通常不起作用。
https://stackoverflow.com/questions/25273971
复制相似问题