基本上是代码行
extern char *strlwr OF((char *s));
给出错误
warning C4273: 'strlwr' : inconsistent dll linkage
我不知道为什么。这不是我的代码所以我在解决如何修复它时遇到了问题。
答案 0 :(得分:2)
寻找:
_declspec( dllexport );
_declspec( dllimport );
附加到strlwr的声明。这与此有关。
基本上当你在dll中声明strlwr时,例如当包含strlwr的头文件被编译到.dll中的代码读取时,应该声明为export。
当调用dll的代码读取标题时,应将其声明为dllimport。
我倾向于制作如下的宏块:
#ifndef DLL_IFACE
#ifdef DLL_IFACE_EXPORT
#define DLL_IFACE _declspec( dllexport )
#else // !DLL_IFACE_EXPORT
#define DLL_IFACE _declspec( dllimport )
#endif // !DLL_IFACE_EXPORT
#endif // !DLL_IFACE
然后对于作为dll接口一部分的头中的所有符号,我用DLL_IFACE声明这些符号。当dll代码读取标头时,我用“#define DLL_IFACE_EXPORT”启动.cpp文件
答案 1 :(得分:0)
您可以使用_strlwr_s
代替strlwr
。