最近装了window7,可是发现在用vs2008时候原来都是用相对路径的东西都不行了,非得改成绝对路径才可以。比哪说如下的代码,把CString filename = dlg.GetPathName();换成CString filename = dlg.GetFileName();就不行了,读取视频出来的指针就是空的.CFileDialog dlg(TRUE,"*.*","*.avi");
dlg.DoModal(); CString filename = dlg.GetFileName(); CvCapture* capture;
capture = cvCaptureFromFile(filename);
if (capture == NULL)
{
MessageBox("error");
} while (1)
{
IplImage *img;
img = cvQueryFrame(capture);
if (img == NULL)
{
MessageBox("the video is finished!");
break;
} cvNamedWindow("video",1);
cvShowImage("video",img);
cvWaitKey(5);
}

解决方案 »

  1.   

    这种相对路径本来就是不准确的,会随用户的操作变化,比如用户使用的文件对话框.
    所以这种情况下,一般都会取得程序的工作路径(exe程序所在的路径),然后,再加上那个相对路径作为路径.
      

  2.   

    vc 6 和vs2005在window7中这样使用没有问题,vs2008在xp下这样使用也没有问题,但vs2008在window7下使用就有这种问题了,我想问一下是不是vs2008配置有问题,在哪个地方可以设置这个东西呢?
      

  3.   

    这个问题跟Windows有关的,呵呵。劝楼主还是使用程序模块所在目录来定位比较好一点。
      

  4.   

    同意楼上的,一定要获取exe文件的运行目录,然后连接成绝对目录,保证不会出问题
      

  5.   

    因为UAC的缘故,如果的程序不是以管理员方式运行的,对Program Files等重要目录的读写会被重定向Users\用户名\AppData\Local\VirtualStore下面。
    看看这个:
    http://msdn.microsoft.com/zh-cn/library/ee532468.aspx
      

  6.   

    UAC默认重定向的一些目录:
    XP: Documents and Settings
    Vista: Users
    XP: Documents and Settings\$USER$\My Documents
    Vista: Users\$USER$\Documents
    XP: Documents and Settings\$USER$\My Documents\My Music
    Vista: Users\$USER$\Music
    XP: Documents and Settings\$USER$\My Documents\My Pictures
    Vista: Users\$USER$\Pictures
    XP: Documents and Settings\$USER$\My Documents\My Videos
    Vista: \Users\$USER$\Videos
    XP: Documents and Settings\$USER$\Application Data
    Vista: Users\$USER$\AppData\Roaming
    XP: Documents and Settings\$USER$\Cookies
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Cookies
    XP: Documents and Settings\$USER$\Local Settings
    Vista: Users\$USER$\AppData\Local
    XP: Documents and Settings\$USER$\NetHood
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Network Shortcuts
    XP: Documents and Settings\$USER$\PrintHood
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
    XP: Documents and Settings\$USER$\Recent
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Recent
    XP: Documents and Settings\$USER$\SendTo
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\SendTo
    XP: Documents and Settings\$USER$\Start Menu
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Start Menu
    XP: Documents and Settings\$USER$\Templates
    Vista: Users\$USER$\AppData\Roaming\Microsoft\Windows\Templates
    XP: Documents and Settings\$USER$\Local Settings\Application Data
    Vista: Users\$USER$\AppData\Local
    XP: Documents and Settings\$USER$\Local Settings\History
    Vista: Users\$USER$\AppData\Local\Microsoft\Windows\History
    XP: Documents and Settings\$USER$\Local Settings\Temporary Internet Files
    Vista: Users\$USER$\AppData\Local\Microsoft\Windows\Temporary Internet Files
    XP: Documents and Settings\All Users
    Vista: ProgramData
    XP: Documents and Settings\All Users\Application Data
    Vista: ProgramData
    XP: Documents and Settings\All Users\Desktop
    Vista: Users\Public\Desktop
    XP: Documents and Settings\All Users\Documents
    Vista: Users\Public\Documents
    XP: Documents and Settings\All Users\Favorites
    Vista: Users\Public\Favorites
    XP: Documents and Settings\All Users\Start Menu
    Vista: ProgramData\Microsoft\Windows\Start Menu
    XP: Documents and Settings\All Users\Templates
    Vista: ProgramData\Microsoft\Windows\Templates
    XP: Documents and Settings\Default User
    Vista: Users\Default