freeswitch在windows平台添加mqtt(编译并添加mod_Mosquitto)

 首先下载mosquitto

Download | Eclipse Mosquitto


选择对应的windows版本并安装

在src/mod/applications/下下载mod_mosquitto 链接freeswitch/mod_mosquitto: mod_mosquitto is a FreeSWITCH interface to an MQTT broker using the Eclipse Mosquitto project C client library. (github.com)

在解决方案里面新建项目


把下载的文件添加进去


这里参照了其他解决方案对项目更改了一下这里附上全文

<?xml version="1.0" encoding="utf-8"?>

<Project DefaultTargets="Build" ToolsVersion="15.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">

    <ProjectName>mod_mosquitto</ProjectName>

    <ProjectGuid>{2785c055-dc19-48c6-8a91-a1ecb0a25c30}</ProjectGuid>

    <RootNamespace>mod_mosquitto</RootNamespace>

    <Keyword>Win32Proj</Keyword>

  </PropertyGroup>

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">

    <ConfigurationType>DynamicLibrary</ConfigurationType>

    <CharacterSet>MultiByte</CharacterSet>

    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>

  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">

    <ConfigurationType>DynamicLibrary</ConfigurationType>

    <CharacterSet>MultiByte</CharacterSet>

    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>

  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

    <ConfigurationType>DynamicLibrary</ConfigurationType>

    <CharacterSet>MultiByte</CharacterSet>

    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>

  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">

    <ConfigurationType>DynamicLibrary</ConfigurationType>

    <CharacterSet>MultiByte</CharacterSet>

    <PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>

  </PropertyGroup>

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />

  <ImportGroup Label="ExtensionSettings">

  </ImportGroup>

  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">

    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

    <Import Project="..\..\..\..\w32\module_release.props" />

  </ImportGroup>

  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">

    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />

    <Import Project="..\..\..\..\w32\module_debug.props" />

  </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" />

    <Import Project="..\..\..\..\w32\module_release.props" />

  </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" />

    <Import Project="..\..\..\..\w32\module_debug.props" />

  </ImportGroup>

  <PropertyGroup Label="UserMacros" />

  <PropertyGroup>

    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>

  </PropertyGroup>

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">

    <ClCompile>

      <PrecompiledHeader>

      </PrecompiledHeader>

      <AdditionalIncludeDirectories>../../libvpx;$(SolutionDir)\src\include;$(SolutionDir)\libs\mosquitto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

    </ClCompile>

    <Link>

      <RandomizedBaseAddress>false</RandomizedBaseAddress>

      <DataExecutionPrevention>

      </DataExecutionPrevention>

      <AdditionalLibraryDirectories>$(SolutionDir)\libs\mosquitto;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

      <AdditionalDependencies>mosquitto.lib;mosquittopp.lib;%(AdditionalDependencies)</AdditionalDependencies>

    </Link>

  </ItemDefinitionGroup>

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">

    <Midl>

      <TargetEnvironment>X64</TargetEnvironment>

    </Midl>

    <ClCompile>

      <PrecompiledHeader>

      </PrecompiledHeader>

      <AdditionalIncludeDirectories>../../libvpx;$(SolutionDir)\src\include;$(SolutionDir)\libs\mosquitto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

    </ClCompile>

    <Link>

      <RandomizedBaseAddress>false</RandomizedBaseAddress>

      <DataExecutionPrevention>

      </DataExecutionPrevention>

      <TargetMachine>MachineX64</TargetMachine>

      <AdditionalLibraryDirectories>$(SolutionDir)\libs\mosquitto;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

      <AdditionalDependencies>mosquitto.lib;mosquittopp.lib;%(AdditionalDependencies)</AdditionalDependencies>

    </Link>

  </ItemDefinitionGroup>

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">

    <ClCompile>

      <PrecompiledHeader>

      </PrecompiledHeader>

      <AdditionalIncludeDirectories>../../libvpx;$(SolutionDir)\src\include;$(SolutionDir)\libs\mosquitto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

    </ClCompile>

    <Link>

      <RandomizedBaseAddress>false</RandomizedBaseAddress>

      <DataExecutionPrevention>

      </DataExecutionPrevention>

      <AdditionalLibraryDirectories>$(SolutionDir)\libs\mosquitto;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

      <AdditionalDependencies>mosquitto.lib;mosquittopp.lib;%(AdditionalDependencies)</AdditionalDependencies>

    </Link>

  </ItemDefinitionGroup>

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">

    <Midl>

      <TargetEnvironment>X64</TargetEnvironment>

    </Midl>

    <ClCompile>

      <PrecompiledHeader>

      </PrecompiledHeader>

      <AdditionalIncludeDirectories>../../libvpx;$(SolutionDir)\src\include;$(SolutionDir)\libs\mosquitto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

    </ClCompile>

    <Link>

      <RandomizedBaseAddress>false</RandomizedBaseAddress>

      <DataExecutionPrevention>

      </DataExecutionPrevention>

      <TargetMachine>MachineX64</TargetMachine>

      <AdditionalLibraryDirectories>$(SolutionDir)\libs\mosquitto;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

      <AdditionalDependencies>mosquitto.lib;mosquittopp.lib;%(AdditionalDependencies)</AdditionalDependencies>

    </Link>

  </ItemDefinitionGroup>

  <ItemGroup>

    <ClInclude Include="mod_mosquitto.h" />

    <ClInclude Include="mosquitto_cli.h" />

    <ClInclude Include="mosquitto_config.h" />

    <ClInclude Include="mosquitto_events.h" />

    <ClInclude Include="mosquitto_mosq.h" />

    <ClInclude Include="mosquitto_utils.h" />

  </ItemGroup>

  <ItemGroup>

    <ClCompile Include="mod_mosquitto.c" />

    <ClCompile Include="mosquitto_cli.c" />

    <ClCompile Include="mosquitto_config.c" />

    <ClCompile Include="mosquitto_events.c" />

    <ClCompile Include="mosquitto_mosq.c" />

    <ClCompile Include="mosquitto_utils.c" />

  </ItemGroup>

  <ItemGroup>

    <ProjectReference Include="..\..\..\..\w32\Library\FreeSwitchCore.2017.vcxproj">

      <Project>{202d7a4e-760d-4d0e-afa1-d7459ced30ff}</Project>

      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>

    </ProjectReference>

  </ItemGroup>

  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />

  <ImportGroup Label="ExtensionTargets">

  </ImportGroup>

</Project>


把安装的下的mosquitto开发文件拷到fs的lib路径下


并添加依赖项


 编译报错找不到strndup,手动定义一下


编译通过


编译通过后发现加载库总是失败,怀疑是freeswitch的模块不能依赖其他动态库,参照这篇文章mosquitto在windows10中VS2019进行编译出lib和dll - howard-hh - 博客园 (cnblogs.com)Windows环境超详细 Openssl库编译安装vs2019版本_51CTO博客_Windows安装openssl

在windows下编译了一个openssl的静态库,再依赖这个静态库编译了mosquitto,后续更改项目生成lib



替换原来的lib,可以正常编译.和load

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容