visualstudio c++redis(msopentech端口)客户端,hiredis
visual studio c++ redis (msopentech port) client , hiredis
我是c++的新手,我决定尝试一下visual studio c++、boost、llvm(在boost 1.55和visual studio 2013中已经失败(和redis。
这是一个小型的pet项目,用于将从套接字和缓存读取的原始数据解析到redis中。
当我试图链接到hiredis.lib时,我遇到了很多错误。
我知道我做错了什么,但我的考验变成了无休止的循环。如果我能为您提供指导,我们将不胜感激。
谨致问候。
错误:
1>------ Build started: Project: example4, Configuration: Debug x64 ------
1> Source.cpp
1>LIBCMTD.lib(dosmap.obj) : error LNK2005: _errno already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _aligned_free already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _aligned_malloc already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: _calloc_dbg already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_wctype.obj) : error LNK2005: iswalnum already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_wctype.obj) : error LNK2005: iswalpha already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_wctype.obj) : error LNK2005: iswgraph already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_wctype.obj) : error LNK2005: iswspace already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(mlock.obj) : error LNK2005: _lock already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(mlock.obj) : error LNK2005: _unlock already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winapisupp.obj) : error LNK2005: __crtCaptureCurrentContext already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winapisupp.obj) : error LNK2005: __crtCapturePreviousContext already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winapisupp.obj) : error LNK2005: __crtSetUnhandledExceptionFilter already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winapisupp.obj) : error LNK2005: __crtTerminateProcess already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winapisupp.obj) : error LNK2005: __crtUnhandledException already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(tidtable.obj) : error LNK2005: _getptd already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(invarg.obj) : error LNK2005: _invalid_parameter already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(sprintf.obj) : error LNK2005: sprintf already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_file.obj) : error LNK2005: __iob_func already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_file.obj) : error LNK2005: _lock_file already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(_file.obj) : error LNK2005: _unlock_file already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _amsg_exit already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _cexit already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _initterm_e already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: exit already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(errmode.obj) : error LNK2005: __set_app_type already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(winxfltr.obj) : error LNK2005: _XcptFilter already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(wsetloca.obj) : error LNK2005: _configthreadlocale already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(vsnprnc.obj) : error LNK2005: vsprintf_s already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(fflush.obj) : error LNK2005: fflush already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_a already defined in MSVCRTD.lib(cinitexe.obj)
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_z already defined in MSVCRTD.lib(cinitexe.obj)
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xc_a already defined in MSVCRTD.lib(cinitexe.obj)
1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xc_z already defined in MSVCRTD.lib(cinitexe.obj)
1>LIBCMTD.lib(dbgrptw.obj) : error LNK2005: _CrtDbgReportW already defined in MSVCRTD.lib(MSVCR120D.dll)
1>LIBCMTD.lib(printf.obj) : error LNK2005: printf already defined in MSVCRTD.lib(MSVCR120D.dll)
1>MSVCRTD.lib(MSVCR120D.dll) : error LNK2005: strcpy_s already defined in LIBCMTD.lib(strcpy_s.obj)
1>MSVCRTD.lib(MSVCR120D.dll) : error LNK2005: iswdigit already defined in LIBCMTD.lib(_wctype.obj)
1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
1>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
1>hiredis.lib(hiredis.obj) : error LNK2019: unresolved external symbol strerror_r referenced in function __redisSetError
1>hiredis.lib(net.obj) : error LNK2001: unresolved external symbol strerror_r
1>hiredis.lib(hiredis.obj) : error LNK2001: unresolved external symbol fdapi_close
1>hiredis.lib(net.obj) : error LNK2001: unresolved external symbol fdapi_close
1>hiredis.lib(net.obj) : error LNK2001: unresolved external symbol fcntl
1>hiredis.lib(net.obj) : error LNK2001: unresolved external symbol poll
1>F:SoftwareDevelopmentcplusplusexample4x64Debugexample4.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 2 up-to-date, 0 skipped ==========
项目文件:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FADCAD1B-D309-427E-8A12-2140E0CC1E3C}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>example4</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>F:Softwareboost_1_55_0;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>None</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>F:Softwareboost_1_55_0stagelib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy *.config "$(TargetDir)*.config"</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>F:Softwareboost_1_55_0;F:Softwareredisdepshiredis;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<DebugInformationFormat>None</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<MinimalRebuild>false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>F:Softwareboost_1_55_0stagelib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>%(AdditionalDependencies)</AdditionalDependencies>
</Link>
<PostBuildEvent>
<Command>copy *.config "$(TargetDir)*.config"</Command>
</PostBuildEvent>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="log.config">
<DeploymentContent>true</DeploymentContent>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
</ExcludedFromBuild>
</None>
</ItemGroup>
<ItemGroup>
<ClCompile Include="Source.cpp" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="........Softwareredismsvshiredishiredis.vcxproj">
<Project>{13e85053-54b3-487b-8ddb-3430b1c1b3bf}</Project>
<Private>true</Private>
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
<LinkLibraryDependencies>true</LinkLibraryDependencies>
<UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
构建使用hiredis的可执行文件时,请确保在下链接到hiredis.lib
和Win32_Interop.lib
Configuration Properties > Linker > Input > Additional Dependencies
此外,您可能希望将正在构建的所有项目的运行库更改为dll版本(Multi-threaded DLL (/MD)
(
Configuration Properties > C/C++ > Code Generation > Runtime-Library
您需要针对hiredis.lib
和Win32_Interop.lib
进行链接。
您看到的错误是因为您使用的hiredis.lib
是使用(多线程(/MT((构建的,并且您的可执行文件使用/MD运行库。
你可以在下更改
Configuration Properties > C/C++ > Code Generation > Runtime-Library
从下载源代码https://github.com/MSOpenTech/redis并使用/MD标志和正确的平台形式(Win32或x64(重建CCD_ 7和CCD_。这两个项目都在/msvc/RedisServer.sln
中。
首先,设置项目属性
1
项目>属性>配置属性
概述>项目默认值>Charset使用多字节字符集
2
C/C++>代码生成>运行库多线程调试(/MTd(
然后尝试使你的项目复杂化。。。
新的错误看起来像超越(
1>C: \Program Files(x86(\MSBuild\Microsoft。Cpp\v4.0\V120\Microsoft.CppBuild.targets(376,5(:错误MSB8031:不赞成为非Unicode字符集构建MFC项目。您必须将项目属性更改为Unicode或下载其他库。看见http://go.microsoft.com/fwlink/p/?LinkId=286820了解更多信息。
您必须下载";MFC MBCS DLL";
我尝试解决此问题,并下载并安装此文件。。。
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从服务器传输到客户端的消息不会出现
- OpenSSL TLS服务器-使用客户端证书白名单
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何绑定 C++ gRPC 客户端的网络接口
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 将相机数据从服务器实时流式传输到客户端
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- GRPC C++ TLS 客户端 grpc::SslCredentials() 方法不返回
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- hiredis客户端,连接断开时发生redisAsyncFree错误
- visualstudio c++redis(msopentech端口)客户端,hiredis