码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++通信框架


    有个C++的类库,读取文件的,要放到Unity里面能够调用。但是有问题,基本的CreateFileA返回的结果是-1,错误代码是123,显示是路径错误,但是路径正气的,怀疑是不是从Unity里面运行不行。单独使用时没问题。那考虑分开好了,通过通信的方式在Unity里面用c#调用c++,那就需要一个通信过程了,可以用最基本的tcp,但是我想找一个c++上的webapi服务端,就去找了。参考:C++ Web相关的框架整理-电子发烧友网

    暂时考虑用微软的C++ Rest SDK。

    GitHub - microsoft/cpprestsdk: The C++ REST SDK is a Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design. This project aims to help C++ developers connect to and interact with services.

    代码下载下来了,不知道怎么使用。

    根据提示,先安装vcpkg:

    GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS

    打开VSCode,运行一个终端(powershell),输入指令。

    > git clone https://github.com/microsoft/vcpkg

            这个没问题,当前电脑网络有点奇怪,vpn开着可以下载,不开着这个下载不下来。

    > .\vcpkg\bootstrap-vcpkg.bat

            这个显示无法下载vcpkg.exe,手动从提示的网址上下载下来,放到vcpkg文件夹里面。

    然后用vcpkg下载。

    .\vcpkg\vcpkg install cpprestsdk cpprestsdk:x64-windows

    第一次运行时不断下载相关的其他包,最后有个下载不了,卡住了。

    再次运行,可以了。

    似乎生成几个dll,

    创建一个c++的控制台应用程序,添加dll引用。参考:visual studio c++ 动态调用第三方DLL_lvshow的博客-CSDN博客_vs调用第三方dll

    添加include代码,参考:C++ REST SDK(Casablanca)_阿萨德科的博客-CSDN博客_c++ rest sdk

    似乎不行,VisualStudio也提示可以用vcpkg安装。

    想到那也可以用NuGit安装吧,果然有,安装上去后,include代码可以了。

    那其实前面的都没有必要,在VisualStudio里面使用的话到NuGit上找合适的类库安装就好了。无论是C#代码还是C++代码。

    ------------

    C++项目怎么引用第三方的dll?

    参考:

    Visual Studio 2019:引用动态DLL项目_OceanStar的学习笔记的博客-CSDN博客_vs2019添加dll引用自己创建的独立的dll,测试可以这样引用,3个地方要修改。但是cpprest却不行,奇怪了,我是把cpprest_2_10d.dl和cpprest_2_10d.lib拷贝过来了的。

    折腾了一下,还是不行,算了,还是NuGit安装吧,有空再研究一下VisualStudio引用DLL的问题。

    1.Visual Studio介绍&简单工程建立_哔哩哔哩_bilibili

    --------------

    前面的参考资料里面的代码发现是客户端的代码,我需要的是服务端的,C++作为服务端提供WebApi接口给Unity调用。

    所有的例子:Samples · microsoft/cpprestsdk Wiki · GitHub

    服务端例子参考:

    例子1:

    GitHub - Meenapintu/Restweb: Sample code of cpprestsdk (casablanca), it's a sample example for beginner to get started with cpprestsdk with database(currently PostgreSQL) integration with basic structure, programmer can extend it.

    例子2:

    https://github.com/ivanmejiarocha/micro-service

    结合前面两种的代码,把需要的拿到项目中,能够简单的从浏览器访问WebApi接口了。

    注意例子2中的,basic_controller.cpp里面的

    1. #include "basic_controller.h"
    2. #include "network_utils.h"

    要改成

    1. #include "network_utils.h"
    2. #include "basic_controller.h"

    不然会出现错误,

    具体我也不懂,boost安装的是NuGet上的相关的,包括一些vc142的其他相关包。 

    1. PM> Install-Package boost
    2. PM> Install-Package boost_date_time-vc142
    3. PM> Install-Package boost_filesystem-vc142
    4. PM> Install-Package boost_log-vc142
    5. PM> Install-Package boost_system-vc142
    6. PM> Install-Package boost_thread-vc142
    7. PM> Install-Package boost_chrono-vc142
    8. PM> Install-Package boost_log_setup-vc142
    9. PM> Install-Package boost_chrono-vc142
    10. PM> Install-Package boost_atomic-vc142

    参考:c++ - LNK1104cannot open file 'libboost_log-vc142-mt-gd-x64-1_72.lib'? - Stack Overflow

    还有就是network_utils里面的一些string参数要改成utility::string_t参数,可能具体的包那时和现在不一样了吧。找了个StringToWString转换一下。

    另外就是json:value:string部分代码要改一下,参考:JSON · microsoft/cpprestsdk Wiki · GitHub

    ============================

    接下来是C#那边客户端了,使用UnityWebRequest获取网址的返回值就行了,默认返回的就是json的结果。简单参数就放到构建的url里面传递给服务端。

    ------------------------------------------------

    如何传递二进制文件?

    如何返回二进制文件?

  • 相关阅读:
    OkHttp搞定Http请求
    反射修改其它 APP SharedPreferences 数据
    Go语言语法分析之我想打同事的脸--编译
    App移动端测试(3)—— ADB命令
    HTML超链接标签
    vue3中使用v-model实现父子组件数据同步
    美国Embarcadero公司正式发布2023 RAD Studio Delphi C++ Builder 12 Athens
    java实现带有html格式和附件的符合RFC822规范的eml格式的信件原文组装
    数据库顶会 VLDB 2023 论文解读:字节跳动如何解决超大规模流式任务运维难题
    Java 集合 - Queue 接口
  • 原文地址:https://blog.csdn.net/llhswwha/article/details/126884177
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号