Visual Studios 9不一致的Dll链接

时间:2012-07-09 14:41:48

标签: c++ visual-studio dll linkage

基本上是代码行

extern char *strlwr       OF((char *s));

给出错误

warning C4273: 'strlwr' : inconsistent dll linkage

我不知道为什么。这不是我的代码所以我在解决如何修复它时遇到了问题。

2 个答案:

答案 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