2012-07-09 47 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