2012-10-29 106 views
1

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

以下代码适用于我的桌面环境(Windows 7,Visual Studio 2010,64位)。 然而,在我的MacBook,我正在训练营和/或VMware为具有完全相同的Visual Studio 2010中

我试图调整这一问题在Windows 7 64位虚拟机:

  1. 我确定我的Macbook上的绝对路径与桌面上的绝对路径相同。我进一步确认,我安装了第三方库,以与我在桌面上做过两次相同的方式,在 中读取我的wave文件。

  2. 我重写了桌面上运行的程序,重新安装了我的macbook上的库。更简单的程序在桌面上工作,但很可惜,仍然无法读取macbook上的绝对路径。

  3. 我移动了wav文件,所以不是一个路径,而是在实际的项目解决方案本身。不用找了。

  4. Google。

我在底部包含代码,为您的利益。我用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 

和往常一样,感谢您在这个问题阅读。我深深感谢你们的任何帮助,帮助或智慧。特别是如果你遇到类似的问题。

原来亲切问候, GeekyOmega

+2

尝试运行[进程监视器(http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx?ppud=4),并设置过滤器“进程名称'包含'WaveReader',它应该准确显示它试图打开哪些文件或目录 –

+0

你有权限阅读VM中的geekyomega文件夹吗?您是否在VM上以geekyomega身份登录?你是否需要以管理员身份运行调试器? – 8bitwide

+1

这是一个非常奇怪的文件位置。它当然属于您的文档或音乐文件夹?只是简单地忘记将文件从一台机器复制到另一台机器将是一个经典错误。使用Environment :: GetFolderPath()来避免硬编码路径。 –

回答

0

是相关的权限。此外,Hans Passant认为绝对路径并不是很好的编码习惯。这意味着作为一个概念的证明,所以请让我放弃这个技术性。

问候, GeekyOmega

相关问题