如果你想在同一个target上既编译静态库,又能编译动态库,那么稍微修改下 xmale.lua就行了:
```lua
add_target("test")
-- 设置编译target的类型,之前是:static/shared,现在改成动态的
set_kind("$(kind)")
-- 添加文件
add_files(*.c)
```
好了,现在默认编译的时候,会生成静态库:libtest.a
如果你想生成动态库,只需要执行:
```bash
简写
xmake f -k shared
或者
xmake config --kind=shared
编译
xmake
```
继续阅读 »
本文主要介绍go语言动态库的编译和使用方法,以linux平台为例,windows平台步骤一样,具体环境如下:
``
$ echo $GOPATH
/media/sf_share/git/go_practice
$ echo $GOROOT
/usr/lib/golang/
$ tree $GOPATH/src
/media/sf_share/git/go_practice/src
|-- demo
|-- demo.go
`-- main.go
继续阅读 »
系统刚刚部署到阿里云的ubuntu-server操作系统上面,一直运行不来结果,但是也没有发现出错信息,经过多次查询发现缺少libXrender.so.1库。
安装libXrender.so.1库。
sudo apt-get install libxrender-dev
sudo apt-get install libxtst-dev
继续阅读 »
说明
库是程序代码的合集,常见的有开源库和闭源库,其中.a就是闭源库(无法看到具体实现方法),而Github上的代码基本都是开源库。静态库执行时会被复制到可执行文件中,多次调用则会出现冗余拷贝,不建议使用静态库。可以使用动态库.dylib(动态库貌似通不过appstore审核)或者源码。
生成.a文件
一个.a文件,要想兼容各种不同的cpu架构,需要包含各种指令集(amrv7/armv7s/arm64/i386/x86_64等)。常用的查看和合并.a文件的指令lipo。
继续阅读 »
xmake的add_files接口不仅可以添加源代码文件进行编译,还可以直接添加.o/obj对象文件、以及.a/lib的库文件到编译目标中,这个跟add_links是有区别的
add_links:只能添加链接,例如: -lxxxx 这种,链接的目标也只能是可执行程序、动态库,而且只会链接需要的代码进去
add_files:是直接将静态库中的所有对象文件,解包、重新打包到新的target中,这个target可以是新的静态库,也可以是可执行程序、或者动态库
例如:
```lua
target("test")
-- 生成静态库:libtest.a
set_kind("static")
-- 添
继续阅读 »
Runtime是什么
Runtime是一个c和汇编写的动态库(感谢Lision的指正),它就像一个小小的系统,将OC和C紧密关联,这个系统主要做两件事 :
1、封装C语言的结构体和函数,让开发者在运行时创建、检查或者修改类、对象和方法等等。
2、传递消息,找出方法的最终执行代码。
继续阅读 »
ctypes是一个Python库,可以提供C中的数据类型,调用链接库中的函数.
1.加载动态链接库
使用cdll.LoadLibrary或者CDLL.
ex CDLL("libc,so,6")
2.调用已加载库中的函数
继续阅读 »
随着公司的业务的发展有幸接触到OpenCV 这个图形库,这篇文章主要是总结一下在Mac 上使用OpenCV做一个动态的广告植入。
OpenCV 是什么:
OpenCV的全称是:Open Source Computer Vision Library。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。
继续阅读 »
本文主题是如何动态获取实例属性的值。
Objective-C运行时库已经有这样的功能。使用这些方法需要加头文件。
```
import
```
要用到的方法是:
objc_property_t *class_copyPropertyList(Class cls, unsigned int *outCount)
继续阅读 »
问题描述
项目使用SpringMVC框架,并用jackson库处理JSON和POJO的转换。在POJO转化成JSON时,有些属性我们不需要输出或者有些属性循环引用会造成无法输出。
例如:实体User其中包括用户名、密码、邮箱等,但是我们在输出用户信息不希望输出密码、邮箱信息;
例如:实体user和department是多对一的关系,user内保存着department的信息,那么json输出时会导致这两个实体数据的循环输出;
jackson默认可以使用JsonIgnoreProperties接口来定义要过滤的属性,然后使用ObjectMapper#addMixInAnnotations来设置对应实体对应的JsonIgnorePr
继续阅读 »