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 にコンパイルされたコードによって読み取られる場合は、エクスポートを宣言する必要があります。

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 に答える