【发布时间】:2013-05-12 09:50:10
【问题描述】:
我有一个内容如下的“.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。
【问题讨论】: