我的要求是使用extern“ c”函数从集合中获取项目。方法如下
template<class _Ty,
class _Alloc = allocator<_Ty> >
extern "C" __declspec(dllexport) _Ty* __cdecl GetItem(std::vector<_Alloc>* itr, int index)
{
if (itr->size() < index)
return NULL;
return &itr->at(index);
}
在编译时出现如下错误
error C2988: unrecognizable template declaration/definition
此extern
方法的使用是使用pinvoke
中的c#
来获取对象数据
答案 0 :(得分:9)
不,那不可能。该标准禁止模板及其专业与C链接。引用C ++ 17(N4659)[temp] 17/4:
...模板,显式模板 专门化(17.7.3)和类模板部分专门化不得具有C链接。 ...
答案 1 :(得分:0)
实际上不, 在上述模板显式专业化(17.7.3)中,类模板部分专业化不得具有C链接