沉默流星 发表于 2025-8-16 14:11:03

封装时碰到嵌入代码就闪退,是啥情况

原生VS代码,是正常的
//#include <stdio.h>
#include <iostream>
using namespace std;
#include "miniaudio.h"
#include "miniaudio.c"

int main()
{
    ma_result result;
    ma_engine engine;

    result = ma_engine_init(NULL, &engine);
    if (result != MA_SUCCESS) {
      return -1;
    }
    int a=0;
    a=ma_engine_play_sound(&engine, "H:\\mfc\\cangjietestvs\\audio\\miniaudio\\miniaudio\\imp\\sound.wav", NULL);

    cout << a << endl;
    getchar();

    ma_engine_uninit(&engine);

    return 0;
}火山嵌入的代码
<火山程序 类型 = "通常" 版本 = 1 />

包 火山.程序 <@视窗.头文件搜寻目录 = "lib\\include" @视窗.外部头文件 = "miniaudio.h" @视窗.外部源文件 = "lib\\include\\miniaudio.c">

类 启动类 <公开 基础类 = 程序类>
{
    方法 启动方法 <公开 类型 = 整数>
    {
      // 在此处填入自己的代码
      @ ma_result result;
      @   ma_engine engine;
      @
      @   result = ma_engine_init(NULL, &engine);
      @   if (result != MA_SUCCESS) {
      @         return -1;
      @   }
      @   int a=0;
      @   a=ma_engine_play_sound(&engine, "H:\\mfc\\cangjietestvs\\audio\\miniaudio\\miniaudio\\imp\\sound.wav", NULL);
      @ getchar();
      @ ma_engine_uninit(&engine);
      标准输入 ()
      返回 (1)
    }

    #
}
调试结果
--- 开始调试当前项目"测试音频"编译后的结果文件"H:\火山视窗\学习视窗封装\_int\测试音频\debug\x64\linker\测试音频.exe"
正在启动被调试程序
被调试程序已经退出,退出码为0xC0000005.
调试已经停止
把火山生成的C++转VS之后

//20475行代码
static MA_INLINE HRESULT ma_IMMDeviceEnumerator_GetDefaultAudioEndpoint(ma_IMMDeviceEnumerator* pThis, ma_EDataFlow dataFlow, ma_ERole role, ma_IMMDevice** ppEndpoint) { return pThis->lpVtbl->GetDefaultAudioEndpoint(pThis, dataFlow, role, ppEndpoint); }
页: [1]
查看完整版本: 封装时碰到嵌入代码就闪退,是啥情况