指向外部函数的静态函数指针

时间:2016-01-21 20:01:12

标签: c++ function pointers static external

是否可以创建一个指向外部函数的静态函数指针?

我已经尝试了几种可能的解决方案,但没有工作。

以下是代码:

template <class T>
    struct SIMD_type_traits {
    typedef T type;
};

template <>
struct SIMD_type_traits<int> {
    typedef __m128i type;
};

template <class T, class S = typename SIMD_type_traits<T>>
class SIMD_traits{
public:
    typedef T element_type;
    typedef typename S::type simd_type;
    typedef simd_type(*binaryFunction)(simd_type, simd_type);
    const static binaryFunction add;
};

static void noop(){
    throw std::string("no specialization for SIMD function");
}

template <class T, class S>
const typename SIMD_traits<T, S>::binaryFunction SIMD_traits<T, S>::add = ((SIMD_traits<T, S>::binaryFunction)noop);

template <>
const typename SIMD_traits<int>::binaryFunction SIMD_traits<int>::add = &_mm_add_epi32;

编译此代码部分时出现此错误:

1>main.obj : error LNK2001: unresolved external symbol _mm_add_epi32
1>....obj : error LNK2001: unresolved external symbol _mm_add_epi32
1>c:\....exe : fatal error LNK1120: 1 unresolved externals

我知道,函数_mm_add_epi32是外部函数,函数地址将在链接时解析,但是可以让它工作吗?

0 个答案:

没有答案