我正在使用arpackpp接口。整个库被写入.h
文件中,因此不需要编译库。“多重定义...”在我当前的项目中使用arpackpp
/.../Files/Includes/:当我有一些
arpackpp
头文件中的一些我的文件,这是不是main.cpp
,我得到了下面的错误 - 我现在面临的问题../../../arpack++/include/arerror.h:163:多重定义ArpackError::Set(ArpackError::ErrorCode, std::string const&)' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
std :: iterator_traits :: iterator_category std :: __ iterator_category(char * const &)': /.../Files/包括/../../../ ARPACK ++ /包含/ arerror.h:163:ArpackError::code' /.../Files/Includes/../../../arpack++/include/arerror.h:163: first defined here /tmp/ccruWhMn.o: In function
的std ::矢量> :: MAX_SIZE()const的'的多个定义:
数arpackpp
链接所有.o
文件时起作用。正如我在几个线程中看到的,问题是我实际上包含了函数的实例化,通常应该避免这些实例化。 因为我不想更改整个图书馆,所以我在main.cpp
中使用arpackpp
类包含所有类和函数,这些类变得非常混乱。有没有解决这个问题的方法?为什么不包括警卫(#ifndef...#endif)
防止这个问题?
你能否详细说明你的错误......“多重定义......”可能意味着很多事情?你可以通过编辑你的问题来做到这一点。 – silvergasp