当前位置: 代码迷 >> 移动平台 >> MTK入门级异常,VC编译器无法解析自己声明的外部函数
  详细解决方案

MTK入门级异常,VC编译器无法解析自己声明的外部函数

热度:7028   发布时间:2013-02-26 00:00:00.0
MTK入门级错误,VC编译器无法解析自己声明的外部函数
代码是在Source Insight 3.5下写的,VC++6.0编译
在MMI的目录下写了一个HelloWorld的包,下面3个子目录“Inc”、“Src”和“Res”。
里面有:
HelloWorldGprot.h  
HelloWorldProt.h  
HelloWorldTypes.h  
HelloWorldDefs.h 

报错的方法 _mmi_HelloWorld_entry() 是在HelloWorldGProt.h 中声明,在HelloWorld.C中实现,
最后是在MTK开发包的MMI/MainMenu.C的goto_main_menn()方法中调用:

#include "HelloWorldGprot.h"
void goto_main_menu(void)
{
#ifdef __MMI_HELLOWORLD_ENABLED__
  mmi_HelloWorld_entry();
  return;
#else
  … // 此处为之前goto_main_menu的代码
#endif
}

以上文件的配置工作都在MTK目录下make\plutommi里面的几个文件写好,加入到了工程中去,

VC报错信息:
--------------------Configuration: MMI - Win32 Debug--------------------
Compiling...
MainMenu.c
Creating library...
--------------------Configuration: PC_Simulator - Win32 Debug--------------------
Linking...
  Creating library Debug/PC_Simulator.lib and object Debug/PC_Simulator.exp
LINK : warning LNK4098: defaultlib "LIBCD" conflicts with use of other libs; use /NODEFAULTLIB:library
LIBCMTD.lib(crt0init.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
MMI.lib(MainMenu.obj) : error LNK2001: unresolved external symbol _mmi_HelloWorld_entry
Debug/PC_Simulator.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

PC_Simulator.exe - 2 error(s), 2 warning(s)



PS: 搞了好几天的错误,试过很多网上方法,还是无法解决,希望MTK开发经验丰富的人士指点下,谢谢。

------解决方案--------------------------------------------------------
你新建了一个应用的folder 需要在3个地方修改makefile

make/plutommi/mmi_app下面 .inc (头文件路径) .pth(应用的文件夹路径) .lis(C源文件路径)

不知道是不是你都加了 

另外在VC编译的时候 是不是编译到你的文件了

mmi_app.dsp里面有没有
------解决方案--------------------------------------------------------
在make\plutommi\下
plutoMMi.Lis: 此文件用来指明MMI所要编译的所有源文件
Plutommi\MMI\HelloWorld\Src\HelloWorld.c
plutommi.inc:此文件用来指明MMI所有头文件所在目录
Plutommi\MMI\HelloWorld\Inc
plutommi.pth:此文件用来指明MMI所有源文件所在目录
Plutommi\MMI\HelloWorld\Src


在文件\plutommi\Customer\ResGenerator\Makefile中添加两行:
- I “../../MMI/MainMenu/MainMenuInc” \
-I “../../MMI/HelloWorld/Inc” \

另外你make new会成功,但是make resgen不一定会成功
添加资源一定要make resgen
  相关解决方案