我有一个内容如下的“.h”文件:
#ifndef MY_IMPORT
#define MY_IMPORT __declspec(dllimport) /* !!! */
#endif
#ifndef MY_EXPORT
#define MY_EXPORT __declspec(dllexport)
#endif
#ifdef __cplusplus
extern "C"{
#endif
MY_IMPORT VOID* WINAPI XXX_FUNC( VOID * ARG1, ... );
/* ... */
#ifdef __cplusplus
}
#endif
我有'lib.dll'库,它导出没有@N 后缀的XXX_FUNC。
当我尝试使用此 lib.dll 构建我的 dll (mydll.dll) 时,我收到了 GCC 消息:
undefined reference to `__imp__XXX_FUNC@12'
我看了很多互联网,包括 stackoverflow,但我找不到解决方案。链接器称为:
g++ -shared -Wl,--enable-stdcall-fixup mydll.o -L. lib.dll -o mydll.dll
如我所见,GCC 必须尝试将 '_ imp _XXX_FUNC@12' 链接到 '_ imp _XXX_FUNC',而 '--enable-stdcall-fixup' 是唯一可以防止在这种情况下发出警告的选项,但我的 MinGW GCC不要尝试这个。
我已经用 GCC v4.7 安装了 MinGW。