首先将hex文件放到工程文件中,在object-C升级的线程中使用NSBundle *mainBundle将hex文件复制到app的资源库中,所在的位置为:app-显示包内容-Contents-Resources,在.cpp中写一个函数将object-C绑定的路径传到.cpp中,因为在.cpp中升级及读取hex版本号时也需要这个路径。这样不管用户将app放在哪个文件夹下,在读取的时候都会去app所在的资源库中去读取hex文件。
用到的函数及定义:
char GetNativePath[300];//数组中存放的是hex文件的路径
char *apGetNativePath =GetNativePath;
constchar *HMDhexpath;//Object-C中绑定到资源库的hex文件路径
void GetHexPath(constchar *str){
HMDhexpath = str;
}
方法1:将hex路径转化成URL,再将URL转为NSString,再将NSString转为char,这种转化后路径会比真实路径多7个字符,file://+真实路径,在将这个路径传给GetNativePath数组(总长度为300)时需要将这前七个字符截取掉
strncpy(GetNativePath,HMDhexpath+7, 280);//方法1
路径:file:///Users/Develop/Library/Developer/Xcode/DerivedData/XXXcqyacwywhttktwcrchmqhlpkohky/Build/Products/Debug/XXX.app/Contents/Resources/DIS01_STMF205_HMD_APP.hex
NSURL*pathUrl = [[NSBundle mainBundle]URLForResource:@"DIS01_STMF205_HMD_APP" withExtension:@"hex"subdirectory:nil];
NSString*urlStr = pathUrl.absoluteString;
constchar *hexpath = [urlStrcStringUsingEncoding:NSUTF8StringEncoding];//转化出来只能是const类型
GetHexPath(hexpath);//将绑定hexpath路径通GetHexPath传到.cpp文件中去
方法2:hexpath为真实路径,直接传给GetNativePath,无需截取
strncpy(GetNativePath,HMDhexpath, 300);//方法2
路径: /Users/Develop/Library/Developer/Xcode/DerivedData/XXXcqyacwywhttktwcrchmqhlpkohky/Build/Products/Debug/XXX.app/Contents/Resources/DIS01_STMF205_HMD_APP.hex
*/
NSBundle*mainBundle = [NSBundlemainBundle];
NSString*imagePath = [mainBundle pathForResource:@"DIS01_STMF205_HMD_APP"ofType:@"hex"];
constchar *hexpath = [imagePathcStringUsingEncoding:NSUTF8StringEncoding];//转化出来只能是const类型
GetHexPath(hexpath);
GetHexPath 是 .cpp 中的函数,在 object-C 中 将生成的路径传给了HMDhex path 这个指针