VC有个让新手抓狂的地方, 把工程路径作为调试模式时的进程当前目录.
估计很多新手因为打不开文件而耗费大量的时间,甚至放弃
以前使用纯Windows方式解决这种问题:
1: #include <Shlwapi.h>
2: #include <shlobj.h>
3:
4: #pragma comment(lib,"shlwapi.lib")
5:
6: wchar_t exename[MAX_PATH];
7: ::GetModuleFileName(NULL,exename,MAX_PATH);
8: ::PathRemoveFileSpec( exename );
9: ::SetCurrentDirectory( exename );
需要跨平台时,可以这样写:
1: #include <direct.h>
2: #include <boost/filesystem.hpp>
3:
4: int main(int argc, char* argv[])
5: {
6: _chdir( boost::filesystem::path( argv[0] ).remove_filename().string().c_str() );
7: }
被Windows惯坏了, 到处找Linux或者boost版本的GetModuleFileName, 结果忘记了当年c语言课上教的命令行传入参数...