?
VC有个让新手抓狂的地方, 把工程路径作为调试模式时的进程当前目录.
估计很多新手因为打不开文件而耗费大量的时间,甚至放弃
?
以前使用纯Windows方式解决这种问题:
?
?? 1:? #include
?? 2:? #include
?? 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
?? 2:? #include
?? 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语言课上教的命令行传入参数... ?
摘自 战魂小筑