我试图在Swift 4中运行swix
。我已经解决了出现的大多数初始问题,但是还有一个问题我还不够了解即将解决。它是同一错误的三个实例,请参见下面的代码
var nc = __CLPK_integer(N)
dgetrf_(&nc, &nc, !y, &nc, &ipiv, &info)
重叠访问' nc',但修改需要独占 访问;考虑复制到本地变量
关于如何解决这个问题的任何想法?
答案 0 :(得分:7)
这是SE-0176 Enforce Exclusive Access to Memory的结果,它是在 Swift 4:中实现的
__m
的{{1}},__n
和__lda
参数具有该类型
dgetrf_()
,即使指向变量没有变异(但编译器不知道!)和
你将同一个变量UnsafeMutablePointer<>
的地址传递给它们中的所有三个。
有两种可能的解决方案:附加变量副本:
nc
或var nc1 = nc, nc2 = nc
dgetrf_(&nc, &nc1, &matrix, &nc2, &ipiv, &info)
,因为不安全的指针不使用任何主动执行:
withUnsafeMutablePointer