C++ 程序未在 Visual Studio 2010 中读取绝对路径 [关闭]

Posted

技术标签:

【中文标题】C++ 程序未在 Visual Studio 2010 中读取绝对路径 [关闭]【英文标题】:C++ Program Not Reading Absolute Path in Visual Studio 2010 [closed] 【发布时间】:2012-10-29 16:27:53 【问题描述】:

我有一个 C++ 程序没有读取 Visual Studio 中的绝对路径。

以下代码适用于我的桌面环境(Windows 7、Visual Studio 2010、64 位)。 但是,在我的 macbook 上,我正在为具有完全相同 Visual Studio 2010 的 Windows 7 64 位虚拟机运行 bootcamp 和/或 VMware。

我尝试解决这个问题:

    我确保我的 macbook 上的绝对路径与桌面上的绝对路径相同。我进一步确保我安装了第三方库来读取我的波形文件 与我两次为桌面所做的方式相同。

    我重写了在桌面上运行的程序,在我的 macbook 上重新安装了库。更简单的程序可以在桌面上运行,但是唉,仍然无法在 macbook 上读取绝对路径。

    我移动了 wav 文件,因此不是路径,而是实际项目解决方案本身。不用找了。

    谷歌。

为了您的利益,我将代码包含在底部。我使用 libsndfile 库来读取 wav 文件。我可能只是尝试使用我非常旧的蹩脚 Windows 笔记本电脑,但无法理解我的 macbook VM 机器上可能出了什么问题。

// WaveReader.cpp : main project file.

#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <sndfile.h>

using namespace System;

int main(array<System::String ^> ^args)

    Console::WriteLine(L"Hello World");
    SNDFILE *sf; 
    SF_INFO info; 

    /*Open the wav file. */
    info.format = 0;
    sf = sf_open("C:\\Users\\geekyomega\\gameover.wav",SFM_READ,&info);
    if (sf == NULL)
    
        printf("Failed to open the file.\n");
        getchar();
        exit(-1);
    

我的输出,当我运行这个程序时

Failed to open the file

一如既往,感谢您阅读此问题。我非常感谢你们中的任何人所获得的任何帮助、帮助或智慧。特别是如果您遇到类似的问题。

热烈的问候, 极客欧米茄

【问题讨论】:

尝试运行 Process Monitor 并将过滤器设置为“进程名称”包括“WaveReader”,它应该准确显示它试图打开的文件或目录 您是否有权读取 VM 中的 geekyomega 文件夹?您是否在 VM 上以 geekyomega 以外的任何人身份登录。您可能需要以管理员身份运行调试器吗? 这是一个非常奇怪的文件位置。确定它属于您的 Documents 或 Music 文件夹吗?只是忘记将文件从一台机器复制到另一台机器将是一个典型的错误。使用 Environment::GetFolderPath() 避免硬编码路径。 我认为这与权限有关。此外,汉斯是完全正确的。我从不建议为任何事情做绝对路径。该代码旨在作为概念证明,让我可以将其移植到一个 GUI,在那里我已经有了一个类/方法。 【参考方案1】:

原来和权限有关。此外,Hans Passant 是正确的,绝对路径不是好的编码习惯。这是作为概念证明的,所以请让我在技术性上有所保留。

问候, 极客欧米茄

【讨论】:

以上是关于C++ 程序未在 Visual Studio 2010 中读取绝对路径 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 VS Code 中使用 C++ COM/IFileDialog 时出错,而在 Visual Studio 中使用相同的代码。消息:“IID_IFileOpenDialog”未在此范围内声明

Visual Studio 错误:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册

C++ Visual Studio 运行时错误

通用 Windows 应用程序运行时组件未在使用 Visual Studio 2015 的 Windows 10 上生成 UserIdentity

从 Visual Studio 启动时,C# ReleaseMutex() 未在控制台应用程序的多个实例中释放互斥锁

Android 模拟器未在 Visual Studio 中显示