项目中的链接错误问题(VC开发)

cxyol cxyol 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
问题说明:
1.项目的工作区中有一个工程 MMI (很大有20W行左右的代码)它会生成一个mmi.lib库文件。
2.另外一个工程mskernel 会生成mskerne.dll文件,这个工程依赖 MMI 工程。而且一般保持固定。
我们是做二次开发的,要在MMI中加入一些自己需要的功能,于是,我在mmi_dict.c中做了如下的定义:
文件开始定义了需要的宏:
//define rect of word listox
#define MMIDICT_WORD_LISTBOX_LEFT 0
#define MMIDICT_WORD_LISTBOX_TOP 51
#define MMIDICT_WORD_LISTBOX_RIGHT 175
#define MMIDICT_WORD_LISTBOX_BOTTOM 199

后面引用这些
WINDOW_TABLE( MMIDICT_INPUTWORD_WIN_TAB ) =
{
CLEAR_LCD,
CREATE_LISTBOX_CTRL(MMIDICT_WORD_LISTBOX_LEFT,
MMIDICT_WORD_LISTBOX_TOP,
MMIDICT_WORD_LISTBOX_RIGHT, MMIDICT_WORD_LISTBOX_BOTTOM,
......
END_WIN
};
说明:#define WINDOW_TABLE(_WINTAB_) const uint32 _WINTAB_[]

在文件mmi_acc_main.c中使用了这个MMIDICT_INPUTWORD_WIN_TAB。
文件开始处:
#define WIN_DEF(_WINTAB_) extern const uint32 _WINTAB_[];
WIN_DEF(MMIDICT_INPUTWORD_WIN_TAB)

后面引用了这个MMIDICT_INPUTWORD_WIN_TAB:
MMK_CreateWin((uint32 *)MMIDICT_INPUTWORD_WIN_TAB,PNULL);

问题出来了:
大家知道VC的增量编译是很好用的,但是,只要我在mmi_dict.c编辑前面与宏定义有关的东西后,我“构建”MMI工程(应该是增量的)显示没有编译错误,但是我在生成依赖于该MMI工程的mskerne.dll时,在链接时却提示:
error LNK2001: unresolved external symbol _MMIDICT_INPUTWORD_WIN_TAB
./Bin/MSKernel.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
然后,我有重新重建MMI工程(生成mmi.lib)后,生成mskerne.dll就没有问题了。
因为MMI重建需要很长时间(5-10分钟)所以,想问一下,为什么编辑了宏定义后,在链接时就找不到了这个_MMIDICT_INPUTWORD_WIN_TAB了。
...全文
评论 11
收藏 已收藏
分享
返回顶部
cxyol
VC/MFC 16,550 成员 421,606 内容