基本上代码行
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文件