是否可以创建一个指向外部函数的静态函数指针?
我已经尝试了几种可能的解决方案,但没有工作。
以下是代码:
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
是外部函数,函数地址将在链接时解析,但是可以让它工作吗?