问题描述
我有一个旧的 C++Builder 项目,它使用 WinInet.lib
函数来创建 FTP 连接。我现在想用 WinHttp 替换它,因为 Windows Server 2019 不支持 WinInet。
为了替换 WinInet,我在主 cpp 文件中注释掉了 #pragma link "WININET.LIB"
。然后,在我使用这些函数的文件中,添加了我需要的头文件:
#include <vcl.h>
#pragma hdrstop
// Testing 2021-6-14
#include <windows.h>
#include <winhttp.h>
// Testing 2021-6-14
/* Followed by some more #include */
编译后,我收到 E2238/E2344 错误(“Multiple declaration for.../Earlier declaration of...”) - 我什至尝试在此文件中注释掉旧的 WinInet 函数。不知何故,我的项目仍然链接到 WinInet.lib
,“取消链接”它的最简单方法是什么?
编辑 1:构建后的错误消息
[bcc32 Error] winhttp.h(115): E2238 Multiple declaration for 'HTTP_VERSION_INFO'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(486): E2344 Earlier declaration of 'HTTP_VERSION_INFO'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(115): E2238 Multiple declaration for 'LPHTTP_VERSION_INFO'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(486): E2344 Earlier declaration of 'LPHTTP_VERSION_INFO'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(122): E2238 Multiple declaration for 'INTERNET_SCHEME'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(305): E2344 Earlier declaration of 'INTERNET_SCHEME'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(122): E2238 Multiple declaration for 'LPINTERNET_SCHEME'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(305): E2344 Earlier declaration of 'LPINTERNET_SCHEME'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(167): E2238 Multiple declaration for 'URL_COMPONENTS'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(582): E2344 Earlier declaration of 'URL_COMPONENTS'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(167): E2238 Multiple declaration for 'LPURL_COMPONENTS'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(583): E2344 Earlier declaration of 'LPURL_COMPONENTS'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(169): E2015 Ambiguity between 'URL_COMPONENTS' and 'Winapi::Wininet::URL_COMPONENTS'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(169): E2238 Multiple declaration for 'URL_COMPONENTSW'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(577): E2344 Earlier declaration of 'URL_COMPONENTSW'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] winhttp.h(170): E2238 Multiple declaration for 'LPURL_COMPONENTSW'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
[bcc32 Error] wininet.h(577): E2344 Earlier declaration of 'LPURL_COMPONENTSW'
Full parser context
Export.cpp(32): #include c:\program files (x86)\embarcadero\studio\21.0\include\windows\sdk\winhttp.h
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)