我使用Microsoft Visual Studio Community 2015 RC(版本14.0.22823.1 D14REL)收到与STL相关的链接错误
我正在链接一个C++ DLL并成功使用STL中的许多函数,但它找不到与std :: codecvt相关的东西:
error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class std::locale::id std::codecvt<char32_t,char,struct _Mbstatet>::id" (__imp_?id@?$codecvt@_UDU_Mbstatet@@@std@@2V0locale@2@A)
Run Code Online (Sandbox Code Playgroud)
导致此问题的源代码引用:
std::wstring_convert< std::codecvt_utf8<char32_t>, char32_t > convert;
Run Code Online (Sandbox Code Playgroud)
我的代码生成是针对多线程dll的,我通过详细链接验证了在链接时搜索MSVCPRT.lib.
有任何想法吗 ?
如果我定义一个具有任意数据类型的结构,例如:
struct custom_type {
int a;
float b;
char c;
float *d; // etc...
};
Run Code Online (Sandbox Code Playgroud)
是否存在使用模板编程(C++)来提取该结构的字段类型并在编译时将它们映射到某些特定于类型的代码处理程序的常见模式?
一些上下文:我正在创建一个 API,允许客户定义自己的任意自定义类型,并且仍然允许它们与我用于管理和内省这些类型、执行自动内存管理和其他内务处理的底层系统集成。
“包装”模板或其他机制将允许这种集成,而底层系统无需了解有关定义自定义类型的头文件的任何信息。从客户端的角度来看,代码以正常方式访问结构,但模板允许对结构中的每个字段进行通用处理。
谢谢。