<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Topics tagged with 问题求助]]></title><description><![CDATA[A list of topics that have been tagged with 问题求助]]></description><link>http://forum.d2learn.org/tags/问题求助</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 22:43:57 GMT</lastBuildDate><atom:link href="http://forum.d2learn.org/tags/问题求助.rss" rel="self" type="application/rss+xml"/><pubDate>Invalid Date</pubDate><ttl>60</ttl><item><title><![CDATA[刚学 C++ 模块想要尝试声明与定义分离，结果失败了]]></title><description><![CDATA[<p dir="auto">看起来像是 ConsolePrint 和 encipherment 的问题, 错误提示有找不到模块 ConsolePrint 以及 encipherment 不是个命名空间.<br />
我没有用过这个库, 不确定是不是需要额外配置, 可以先替换成 std::println 试试?</p>
]]></description><link>http://forum.d2learn.org/topic/172/刚学-c-模块想要尝试声明与定义分离-结果失败了</link><guid isPermaLink="true">http://forum.d2learn.org/topic/172/刚学-c-模块想要尝试声明与定义分离-结果失败了</guid><dc:creator><![CDATA[lost-42]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[第一个文件注释掉D2X_wait后直接报错退出]]></title><description><![CDATA[<p dir="auto">这个之前有个类似情况, 程序遇到死循环这个就可能发生. 重新运行每次都会这样吗</p>
]]></description><link>http://forum.d2learn.org/topic/152/第一个文件注释掉d2x_wait后直接报错退出</link><guid isPermaLink="true">http://forum.d2learn.org/topic/152/第一个文件注释掉d2x_wait后直接报错退出</guid><dc:creator><![CDATA[SPeak]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错]]></title><description><![CDATA[<p dir="auto">@SPeak 在 求助 g++15.1使用std::execution对标准库算法加速遇到的问题 - 引入TBB头文件报错 中说：</p>
<blockquote>
<p dir="auto">如果只是使用C++23, 不一定要使用import std/模块特性 (tbb目前本身没有支持/适配</p>
</blockquote>
<p dir="auto">谢谢回复，我大概是明白了，看起来错误似乎来源于同时#include 标准库头文件，和import std; 而TBB库中会引入标准库的头文件。</p>
]]></description><link>http://forum.d2learn.org/topic/133/求助-g-15-1使用std-execution对标准库算法加速遇到的问题-引入tbb头文件报错</link><guid isPermaLink="true">http://forum.d2learn.org/topic/133/求助-g-15-1使用std-execution对标准库算法加速遇到的问题-引入tbb头文件报错</guid><dc:creator><![CDATA[JFH-CAE]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[json库的initializer_list创建问题]]></title><description><![CDATA[<p dir="auto">@SPeak<br />
按照这个思路，只保留一个列表初始化，用了一个辅助函数检测了每个元素是否是数组，如果是数组就检测长度是否是2，然后首元素是否是string，如果初始化列表里全部元素都符合就判定为object。这个代码运行成功了，感谢大佬</p>
  Json(std::initializer_list&lt;Json&gt; init) {
    if (is_object_list(init)) {
      JsonObject dict;
      for (const auto &amp;el : init) {
        auto pair = std::get_if&lt;JsonArray&gt;(&amp;el.m_value);
        // 必须是长度为2的数组
        assert(pair &amp;&amp; pair-&gt;size() == 2);
        auto key = std::get_if&lt;std::string&gt;(&amp;(*pair)[0].m_value);
        // 第一个元素必须是字符串
        assert(key);
        dict.emplace(*key, (*pair)[1]);
      }
      m_value = std::move(dict);
    } else {
      m_value = JsonArray(init);
    }
  }

  bool is_object_list(std::initializer_list&lt;Json&gt; init) {
    return std::all_of(init.begin(), init.end(), [](const Json &amp;el) {
      auto pair = std::get_if&lt;JsonArray&gt;(&amp;el.m_value);
      if (!pair || pair-&gt;size() != 2)
        return false;
      return std::holds_alternative&lt;std::string&gt;((*pair)[0].m_value);
    });
  }

]]></description><link>http://forum.d2learn.org/topic/131/json库的initializer_list创建问题</link><guid isPermaLink="true">http://forum.d2learn.org/topic/131/json库的initializer_list创建问题</guid><dc:creator><![CDATA[dustchens]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[关于sonic实现音频变速不变调的问题]]></title><description><![CDATA[<p dir="auto">hi,友友有解决这个情况吗，我也是当speed不为一时就报错了，我完全不知道如何查找崩溃，找了一天了，下面是我的代码：<br />
void AudioDecodeThread::run()<br />
{<br />
// 加入sonic<br />
// 初始化部分：先创建一个流<br />
sonicStream stream = sonicCreateStream(m_videoPlayControl-&gt;m_audioCodecCtx-&gt;sample_rate, 2);<br />
if (!stream)<br />
{<br />
m_videoPlayControl-&gt;m_eventHandler-&gt;onVideoPlayerError(0, "sonicCreateStream error!");<br />
}</p>
    if (!initSwrCtx())
    {
        m_videoPlayControl-&gt;m_eventHandler-&gt;onVideoPlayerError(0, "initSwrCtx error");
        return;
    }

    while (true)
    {
        if (m_videoPlayControl-&gt;m_currentState == State::STOP)
        {
            break;
        }
        else if (m_videoPlayControl-&gt;m_currentState == State::PAUSE)
        {
            std::this_thread::sleep_for(std::chrono::milliseconds(10));
            continue;
        }

        AVPacket *pkt = m_videoPlayControl-&gt;m_audioPacketQueue.pop();
        if (pkt == nullptr)
        {
            if (m_videoPlayControl-&gt;m_isReadFinished)
            {
                break;
            }
            continue;
        }

        if (memcmp(pkt-&gt;data, FLUSHDATA, strlen(FLUSHDATA)) == 0)
        {
            avcodec_flush_buffers(m_videoPlayControl-&gt;m_audioCodecCtx);
            av_packet_free(&amp;pkt);
            continue;
        }

        int ret = avcodec_send_packet(m_videoPlayControl-&gt;m_audioCodecCtx, pkt);
        if (ret &lt; 0)
        {
            char errbuf[1024] = { 0 };
            av_strerror(ret, errbuf, sizeof(errbuf));
            fprintf(stderr, "avcodec_send_packet: %s (error pts: %d)\n", errbuf, pkt-&gt;pts);
            av_packet_free(&amp;pkt);
            continue;
        }

        AVFrame *frame = av_frame_alloc();
        while (avcodec_receive_frame(m_videoPlayControl-&gt;m_audioCodecCtx, frame) == 0)
        {
            // 读取frame, swr转换, 放到frameQueue里面去
            int inSamples = frame-&gt;nb_samples;
            // int outSamples = av_rescale_rnd(inSamples, 1, 1, AV_ROUND_UP);

            // 废除手动分配的 audioBuffer，改用 resampleFrame 内部缓冲区
            AVFrame *resampleFrame = av_frame_alloc();
            resampleFrame-&gt;format = AV_SAMPLE_FMT_S16;
            av_channel_layout_default(&amp;resampleFrame-&gt;ch_layout, 2); // 双声道
            resampleFrame-&gt;sample_rate = frame-&gt;sample_rate;         // 正确设置采样率
            resampleFrame-&gt;nb_samples = inSamples;

            // 让 FFmpeg 自动分配缓冲区（确保地址和大小正确）
            if (av_frame_get_buffer(resampleFrame, 0) &lt; 0)
            {
                av_frame_free(&amp;resampleFrame);
                continue;
            }

            int len = swr_convert(m_swrCtx, resampleFrame-&gt;data, resampleFrame-&gt;nb_samples, (const uint8_t **)frame-&gt;data, inSamples);

            // 加入sonic

            sonicSetSpeed(stream, m_videoPlayControl-&gt;m_speed);
            // 4. 写入音频数据到Sonic ,这里的bug

            short *valid_audio_data = (short *)resampleFrame-&gt;data[0];
            int total_samples = len; // 单声道总样本数

            std::cout &lt;&lt; len &lt;&lt; std::endl;

            ret = sonicWriteShortToStream(stream, valid_audio_data, total_samples);
            if (ret == 0)
            {
                m_videoPlayControl-&gt;m_eventHandler-&gt;onVideoPlayerError(0, "sonicWriteShortToStream error");
                continue;
            }

            int availableSamples = sonicSamplesAvailable(stream); //
            if (availableSamples &lt;= 0)
            {
                continue;
            }

            // 根据实际需要的样本数分配缓冲区
            short *output_pcm = new short[availableSamples * 2];
            int samples = sonicReadShortFromStream(stream, output_pcm, availableSamples);
            if (samples &lt;= 0)
            {
                delete[] output_pcm;
                av_frame_free(&amp;resampleFrame);
                continue;
            }

            std::cout &lt;&lt; inSamples &lt;&lt; "---" &lt;&lt; len &lt;&lt; "---" &lt;&lt; availableSamples &lt;&lt; "---" &lt;&lt; samples &lt;&lt; std::endl;

            PCMFrame *pcm = new PCMFrame();
            pcm-&gt;setBuffer((uint8_t *)output_pcm, samples * 4);
            pcm-&gt;setPts(frame-&gt;pts);
            pcm-&gt;setSampleRate(frame-&gt;sample_rate);
            m_videoPlayControl-&gt;m_audioFrameQueue.push(pcm);

            delete[] output_pcm;
            av_frame_free(&amp;resampleFrame);
        }
        av_frame_free(&amp;frame);
        av_packet_free(&amp;pkt);
    }
    sonicDestroyStream(stream);
}

]]></description><link>http://forum.d2learn.org/topic/122/关于sonic实现音频变速不变调的问题</link><guid isPermaLink="true">http://forum.d2learn.org/topic/122/关于sonic实现音频变速不变调的问题</guid><dc:creator><![CDATA[Cat-Guijun]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[关于 GitHub 中的 Fork 仓库的简单问题]]></title><description><![CDATA[<p dir="auto">为方便描述，称上游 GitHub 仓库为 upstream，自己 fork 的 GitHub 仓库为 origin。如果没有理解错的话，你应该是遇到下面这个场景并想做到 Step 4：</p>
= Step 1: Fork

* aaaaaa (HEAD -&gt; main, origin/main, upstream/main)
...

= Step 2: Make local changes and push them to origin

* bbbbbb (HEAD -&gt; main, origin/main)
* aaaaaa (upstream/main)
...

= Step 3: Check (fetch) upstream's update

* bbbbbb (HEAD -&gt; main, origin/main)
| * cccccc (upstream/main)
|/
* aaaaaa
...

= Step 4: Rebase (but how?)

* bbbbbb (HEAD -&gt; main, origin/main)
* cccccc (upstream/main)
* aaaaaa
...

<p dir="auto">如果是这样的话，我通常的做法是在本地进行这样的操作：</p>
git pull -r upstream main
# Resolve conflict
git rebase --continue

<p dir="auto">至于 GitHub 有没有一键（或者几键）的做法，我没有找到。</p>
<p dir="auto">参考阅读：https://gitolite.com/git-pull--rebase</p>
]]></description><link>http://forum.d2learn.org/topic/120/关于-github-中的-fork-仓库的简单问题</link><guid isPermaLink="true">http://forum.d2learn.org/topic/120/关于-github-中的-fork-仓库的简单问题</guid><dc:creator><![CDATA[johanvx]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[环境变量问题 - 安装报错, 中文用户名&#x2F;中文路径的影响]]></title><description><![CDATA[<p dir="auto">@pcmingziqaq 已经安装好了。 至于文字显示 是由于和背景颜色重合了, 可以用cmd(黑色背景)里运行 xlings 就能看清楚了, 或者自己设置一下powershell的背景颜色也是可以的</p>

<p dir="auto">文字显示问题后面会尝试进行优化</p>
]]></description><link>http://forum.d2learn.org/topic/99/环境变量问题-安装报错-中文用户名-中文路径的影响</link><guid isPermaLink="true">http://forum.d2learn.org/topic/99/环境变量问题-安装报错-中文用户名-中文路径的影响</guid><dc:creator><![CDATA[SPeak]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[某小项目关于账号验证的问题...]]></title><description><![CDATA[<p dir="auto">只要在第一次验证后, 让服务器发一个自己的token, 后面就可以使用这个token来获取数据。实在不行可以把这个功能做成可选的 -- 即一次验证(也可手动重新验证, 老的将失效) + 功能可选</p>
]]></description><link>http://forum.d2learn.org/topic/81/某小项目关于账号验证的问题</link><guid isPermaLink="true">http://forum.d2learn.org/topic/81/某小项目关于账号验证的问题</guid><dc:creator><![CDATA[sunrisepeak]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[关于rt-thread task_struct结构体的疑惑]]></title><description><![CDATA[<p dir="auto">@sky-littlestar 在 关于rt-thread task_struct结构体的疑惑 中说：</p>
<blockquote>
<p dir="auto">但是一些函数却以此作为类型传参数，task_struct的定义应该怎么找<br />
找不到使用的地方感觉可以找一找实际的函数中是怎么使用的反推结构里面的成员, 也有可能结构是不公开的</p>
</blockquote>
]]></description><link>http://forum.d2learn.org/topic/40/关于rt-thread-task_struct结构体的疑惑</link><guid isPermaLink="true">http://forum.d2learn.org/topic/40/关于rt-thread-task_struct结构体的疑惑</guid><dc:creator><![CDATA[sunrisepeak]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[[windows][安装][环境变量问题]: 求解决 - Powershell运行xlings一键安装命令报错cmd找不到]]></title><description><![CDATA[<p dir="auto">@d2learn-dev 已解决</p>
]]></description><link>http://forum.d2learn.org/topic/32/windows-安装-环境变量问题-求解决-powershell运行xlings一键安装命令报错cmd找不到</link><guid isPermaLink="true">http://forum.d2learn.org/topic/32/windows-安装-环境变量问题-求解决-powershell运行xlings一键安装命令报错cmd找不到</guid><dc:creator><![CDATA[eternity-gh]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[opencv无法使用image show，工程可以正常构建生成可执行文件]]></title><description><![CDATA[<p dir="auto">@Vilote 在 opencv无法使用image show，工程可以正常构建生成可执行文件 中说：</p>
<blockquote>
<p dir="auto">implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvShowImage'</p>
</blockquote>
<p dir="auto">上面 {不使用系统库} 遇到的问题可能和xmake包管理器的gtk包名问题有关系, 最近两天修复了</p>
<p dir="auto">https://github.com/xmake-io/xmake-repo/pull/5748</p>
<p dir="auto">可以用下面的命令更新包索引</p>
xrepo clean 
xrepo update-repo -f

]]></description><link>http://forum.d2learn.org/topic/19/opencv无法使用image-show-工程可以正常构建生成可执行文件</link><guid isPermaLink="true">http://forum.d2learn.org/topic/19/opencv无法使用image-show-工程可以正常构建生成可执行文件</guid><dc:creator><![CDATA[sunrisepeak]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>