0

基本上是代码行

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

给出错误

warning C4273: 'strlwr' : inconsistent dll linkage

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

4

2 回答 2

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 文件

于 2012-07-09T14:58:14.310 回答
0

您可以使用_strlwr_s而不是strlwr.

于 2018-06-22T09:28:16.617 回答