今天接到一个新需求,需要制作一个MacOS端的动态库dylib。
一番查找资料,终于摸索出一条成功的路径。
1,制作动态库dylib
project下面,如此选择。
Type要选择Dynamic,也就是动态库
然后就是我常遇到的,创建自己工具类,然后写一些方法函数。
这个工程创建完,工程目录下默认有个Products,写完你的方法就Command + B,如果你写的方法没有什么语法问题,就可以成功生成一个dylib。
2,使用dylib
每一个dylib生成出来都是有自己的路径的,一般默认/user/local/xxx.dylib。如果你直接将生成的dylib导入你需要的应用工程下,然后再导入头文件.h,在运行时是会报错的。
dyld: Library not loaded:
这个时候就需要你去修改dylib中的路径,也叫id
install_name_tool -id some_path/libxdDevsdk.dylib some_path/libxdDevsdk.dylib
其中这个some_path可以是绝对路径,也可以是相对路径。如果是在工程内部使用的,写成绝对路径也可以,不过如果是多人协作的工程,这一块建议写成相对路径的。
在做完改ID,再次编译工程,还会继续报错。
dyld: Library not loaded: /usr/local/xxxx.dylib
......
Reason: no suitable image found. Did find:
这个是属于你打包生成的dylib需要签名。
那么你就需要对你的dylib进行签名,签名命令
codesign -f -s "Mac Developer: 你的开发者邮箱" xxx.dylib
另外有一个特点的是,如果你的Mac应用工程,没有用到Hardened Runtime中的服务,你可以删除该服务。如果删除了该服务,你的dylib就不再需要签名(亲测有效!)
参考资料
https://blog.csdn.net/ReadyShowShow/article/details/102547633
https://www.jianshu.com/p/d7a0ccc6a7e6
遇到~解决~分享!!!
网友评论