基本上代码行

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


给出错误

warning C4273: 'strlwr' : inconsistent dll linkage


我不知道为什么。这不是我的代码,所以我在寻找解决方法时遇到了问题。

最佳答案

寻找:

_declspec( dllexport );
_declspec( dllimport );


附加到strlwr的声明中。与此有关。

基本上,当您在dll本身中声明strlwr时,例如当包含编译为.dll的代码读取包含strlwr的标头时,应将其声明为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文件

10-01 18:24