2012-07-09 46 views
0

基本的代码视觉工作室9不一致的Dll联动

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

行给出了错误

warning C4273: 'strlwr' : inconsistent dll linkage 

,我不知道为什么。这不是我的代码,所以我有问题找出如何解决它。

回答

2

寻找:

_declspec(dllexport); 
_declspec(dllimport); 

附着的声明strlwr。这与此有关。

基本上,当你在dll本身声明strlwr时,例如当包含strlwr的头文件被编译到.dll中的代码读取时,它应该被声明为导出。

当调用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接口I声明这些符号与DLL_IFACE的一部分的所有的符号。当通过dll代码读取头文件时,我使用“#define DLL_IFACE_EXPORT”启动.cpp文件。

+0

感谢您的帮助。工作得很好。 – SSEMember 2012-07-09 15:06:47