我用PlaySound函数添加C语言背景音乐,但是程序放在别的计算机上播放不了音乐

音乐文件路径我存在放有源文件和头文件的文件夹下,在自己的计算机中可以播放音乐,当生成的程序放在别的电脑下,就不能正常播放音乐了,这是怎么回事,谢谢。

#include<iostream>
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h> 
#include<math.h>
#include"game1.h"
#include <fstream>
#include<ctime>
#include <mmsystem.h>
#include <stdlib.h>
#pragma comment (lib,"Winmm.lib")
using namespace std;
int main() {
    PlaySound(TEXT("C:\\Users\\24907\\source\\repos\\王子斗恶龙2\\王子斗恶龙2\\666.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
    

C:\Users\24907\source\repos\王子斗恶龙2\王子斗恶龙2\666.wav
这个路径你写死了,再别的电脑上不一定有这个目录。建议使用相对目录
假设你的整个软件再source文件夹下,exe文件在source/bin文件夹下,在source文件夹下新建一个文件夹,命名为wav,然后把666.wav移动到source/wav文件夹下,然后修改代码为:

PlaySound(TEXT("../wav/666.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

如果exe文件在source文件夹下,按照上面的方式在source文件夹下新建一个wav文件夹,然后把666.wav移动到wav文件夹下,然后修改代码如下:

PlaySound(TEXT("./wav/666.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);
 

exe所在的目录层级不同,绝对路径的写法有一点差异(/前面点的个数不一样)

建议将下面路径修改成相对路径,这样项目移植到别的电脑都可以运行,不用考虑路径问题

PlaySound(TEXT("C:\\Users\\24907\\source\\repos\\王子斗恶龙2\\王子斗恶龙2\\666.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

上面几位说的正确,补充一下,如果不想改路径,或者单独放音乐文件,可以将这个音乐文件以资源的形式打包到你的工程中,也是相当于相对路径了

换的别的电脑这个路径应该改成对应的,不然找不到

PlaySound(TEXT("C:\\Users\\24907\\source\\repos\\王子斗恶龙2\\王子斗恶龙2\\666.wav"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP);

别的电脑上没有音频文件肯定播放不了啊,要么把代码和音频一块发送到另一个电脑上,要么上传到网上,在线加载

原因
音乐路径问题

解决方法
修改为相对路径 一起复制到其他页面使用

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

路径有必要写这么复杂么?直接一个TEXT("666.wav")不就好了,函数会首先在你的exe同目录下找这个文件,如果没有,就会去C盘的system32和windows文件夹下找,如果死活找不到,那就拉到了。