拉帕克与助推器冲突
lapacke conflicting with boost?
如果我不包括<lapacke.h>
,我会收到以下错误:
test.cpp:20:23: error: ‘LAPACK_ROW_MAJOR’ was not declared in this scope
LAPACKE_dsyev(LAPACK_ROW_MAJOR, jobz, uplo, N, &a[0], lda, &work[0]);
^
test.cpp:20:76: error: ‘LAPACKE_dsyev’ was not declared in this scope
LAPACKE_dsyev(LAPACK_ROW_MAJOR, jobz, uplo, N, &a[0], lda, &work[0]);
但是,当我包含<lapacke.h>
时,我得到了一长串与boost
冲突的错误。我相信这与包括<boost/algorithm/string.hpp>
有关,因为这是我使用的唯一boost
项目。
是否存在与lapacke
和boost
的已知冲突?当我省略<boost/algorithm/string.hpp>
它编译得很好,但更广泛的代码依赖于该包含。
此问题的最小示例如下:
测试.h:
#include <lapacke.h>
#include <boost/algorithm/string.hpp>
#include <vector>
测试.cpp:
#include "test.h"
void eig( std::vector< double > A, std::vector< double >& evecs, std::vector< double >&evals ) {
int N = (int)A.size();
if( N == 6 ) {
/// A is a 3x3 symmetric tensor
char jobz = 'V';
char uplo = 'L';
int N = 3;
int lda = 3;
int lwork = 15;
double work[lwork];
double a[9] = {
A[0], A[3], A[4],
A[3], A[1], A[5],
A[4], A[5], A[2]
};
LAPACKE_dsyev(LAPACK_ROW_MAJOR, jobz, uplo, N, &a[0], lda, &work[0]);
evals[0] = work[0];
evals[1] = work[1];
evals[2] = work[2];
for(int i = 0; i < 9; i++) {
evecs[i] = a[i];
}
} else {
fprintf(stderr, "ERROR: Unknown size of A in eign");
}
}
int main(int argc, char** argv) {
return 0;
}
制作文件:
all: test.exe
CC=g++ -std=c++11
OPTS= -O3 -Wall
LIBS= -lm -L/usr/lib/lapack -llapacke -llapack -lblas -lcblas
test.exe: $(OBJS) test.cpp
$(CC) $(OBJS) $(DEFS) $(OPTS) test.cpp -o test.exe $(LIBS)
clean:
rm -rf *.o
似乎这可能对包含顺序很敏感。尝试先包含提升库,如下所示:
#include <boost/algorithm/string.hpp>
#include <lapacke.h>
#include <vector>
对我来说,它在此配置中编译并运行(但如果首先包含 lapacke,则不会编译)。
相关文章:
- 写入位置0x0000000C时发生访问冲突
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 链表中写入访问冲突的未知原因
- C++中的openCV Mat访问冲突
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- C++尝试深度复制唯一指针时出现内存访问冲突
- 错误:使用通用引用的声明冲突
- 如何解决GTest和LibTorch联动冲突
- 两个运营商的一些奇怪的冲突<<
- 如何在多个线程中创建 QSql数据库连接时防止名称冲突
- C++ 中动态二维数组的访问冲突
- 从嵌套循环中的 std::list 中删除将返回访问冲突
- C++17 十六进制浮点文字单精度后缀冲突?
- 结构字段名称与 GDB 中的 STL 数组冲突
- 写入访问冲突异常
- C++ |匿名命名空间与命名空间 std 冲突
- 拉帕克与助推器冲突