2012-07-17 2 views
1

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 기능은 정상적으로 작동하는 것 같습니다. 여기서 문제가 될 수있는 것은 무엇입니까? 요청하면 더 많은 정보를 제공 할 수 있습니다. 감사.

+0

drem()이 정의 된 또는 을 포함하고 있습니까? – jcopenha

+0

예, 포함했지만 아직 찾을 수 없습니다. – chroipahtz

답변

관련 문제