C chdir函数
chdir微软官方文档
 在制作小游戏时遇到的问题:图片音频等资源文件太多,和exe同一个目录不方便集中管理
 
整理方案1
首先创建了一个名为"resource"的文件夹,把程序执行过程中需要用到的外部文件都放进去
 
 开始改造代码
- include头文件direct
#include <direct.h>
- 在主函数头部分添加chdir()
	_chdir( "./resource" ); 
_chdir()用于跳转程序当前工作目录,类似
cd resource
它的原型声明是
_Check_return_ _CRTIMP int __cdecl _chdir(_In_z_ const char * _Path);
使用_getcwd()可以打印当前工作目录
	printf("Current directory is %s\n", _getcwd(NULL,NULL));
重新生成项目,再次打开时exe可以读取resource文件夹内的内容

 打包完成之后的项目
整理方案2

 在上面的方案1中,dll和exe不在同一个目录,需要使用SetDllDirectory设置Dll目录
 有一种比较偷懒的方法就是:将exe和dll整合在了一个bin文件夹
 现在resource变成了exe的上一级目录
此时只需稍加改动即可
	chdir( "../resource" ); /*加多一个点*/
总结
- 直接搜索chdir():定位到<unistd.h>实际上vs2010并没有这个头文件,#include <unistd.h>对于mingw来说是行的通的
 但网上很多关于vs2010的回答(大部分是复读机)都在使用#ifndef指令include<io.h>和<process.h>,的确可以运行但编译器依旧报错,原因在于io.h和process.h同样没有定义chdir函数,chdir函数的定义在direct.h中
- 搜索程序设置工作目录:定位到vs调试设置,调试设置只是对于配置了开发环境的程序员是有效,但对于普通用户而言,exe的工作目录依旧在默认位置(读取和exe文件同一目录的文件)

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号