C++로 작성되었으며 gcc를 대상으로하고 tvmet이라는 라이브러리에 의존하는 기존 프로젝트가 있습니다. 내가는 MinGW에서 컴파일하기 위해 노력하고있어,하지만 난이 오류 받고 있어요 자세한 배경을 위해MinGW/GCC에서 tvmet 라이브러리를 컴파일 할 때 ":: drem이 선언되지 않았습니다."
c:\mingw\bin\../lib/gcc/mingw32/4.7.0/../../../../include/tvmet/BinaryFunctionals.h:
In static member function 'static tvmet::Fcnl_drem<T1, T2>::value_type
tvmet::Fcnl_drem<T1, T2>::apply_on(T1, T2)':
c:\mingw\bin\../lib/gcc/mingw32/4.7.0/../../../../include/tvmet/BinaryFunctionals.h:230:1:
error: '::drem' has not been declared
을 :
/** \class Fcnl_drem BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
/** \class Fcnl_hypot BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
/** \class Fcnl_jn BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
/** \class Fcnl_yn BinaryFunctionals.h "tvmet/BinaryFunctionals.h" */
#define TVMET_IMPLEMENT_MACRO(NAME) \
template <class T1, class T2> \
struct Fcnl_##NAME : public BinaryFunctional { \
typedef typename PromoteTraits<T1, T2>::value_type value_type; \
\
static inline \
value_type apply_on(T1 lhs, T2 rhs) { \
return TVMET_GLOBAL_SCOPE(NAME)(lhs, rhs); \
} \
\
static \
void print_xpr(std::ostream& os, std::size_t l=0) { \
os << IndentLevel(l) \
<< "Fcnl_" << #NAME << "<T1=" \
<< typeid(T1).name() << ", T2=" << typeid(T2).name() << ">," \
<< std::endl; \
} \
};
TVMET_IMPLEMENT_MACRO(drem)
TVMET_IMPLEMENT_MACRO(hypot)
TVMET_IMPLEMENT_MACRO(jn)
TVMET_IMPLEMENT_MACRO(yn)
#undef TVMET_IMPLEMENT_MACRO
그것은 본질적입니다 : tvmet 다음과 같이 템플릿 구조체를 생성하는 전처리 매크로를 사용 기존 수학 함수의 이름을 대체합니다. 여기서 문제는 "drem"이 정의되어 있지 않은 것 같습니다. "drem"은 glibc의 일부로 보이지만 "fmod"와 같은 다른 glibc 기능은 정상적으로 작동하는 것 같습니다. 여기서 문제가 될 수있는 것은 무엇입니까? 요청하면 더 많은 정보를 제공 할 수 있습니다. 감사.
drem()이 정의 된 또는 을 포함하고 있습니까? –
jcopenha
예, 포함했지만 아직 찾을 수 없습니다. – chroipahtz