更多
52RD研发论坛已升级,老版论坛仅供浏览,请访问新版论坛:http://bbs.52rd.com/
【讨论区】 【资料区】
首页 > 52RD研发论坛 > 软件平台研发论坛 > MTK软件讨论区 > 添加新模块模拟器编译出现问题
论坛升级中,停止回贴功能
帅哥[离线]dourokinga 楼主
等级:实习生
帖子:12
被删:0
经验:56
RD币:7.3
来自:广东 茂名
注册:2010-6-9
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 10:26:401#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
我要为我的项目添加一个新模块,没有源码,只有lib库.
比如叫 xxx.lib
首先我在项目文件夹下增加一个xxx的文件夹,把lib库放进里面
然后在make\\Option.mak里增加下面两行
    COMPOBJS    += xxx\\xxx.lib
    CUS_REL_OBJ_LIST += xxx\\xxx.lib
然后在我的源码abc.c里声明了lib里面的方法,如
extern void func(void);
再调用该方法
最后make remake 没有报错.

但我编译modis (有先gen_modis 和 codegen_modis)时却在Linking报错了
mmi_framework.lib(abc.obj) : error LNK2001: unresolved external symbol _func

后来试下make new 也解决不了问题
[52RD.com]
编辑 引用
等级:研发工程师
帖子:58
被删:-2
经验:398
RD币:34.8
来自:火星
注册:2007-6-5
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 11:04:092#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
createMoDIS.ini
中加入你的库
编辑 引用
帅哥[离线]dourokinga 楼主
等级:实习生
帖子:12
被删:0
经验:56
RD币:7.3
来自:广东 茂名
注册:2010-6-9
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 11:50:073#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
谢谢,可再详细说说具体怎么添加吗?
我在createMoDIS.ini找不到可以效仿的例子。
编辑 引用
等级:研发工程师
帖子:58
被删:-2
经验:398
RD币:34.8
来自:火星
注册:2007-6-5
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 13:24:034#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
[GLOBAL_SETTINGS]

enable_libs += xxx
编辑 引用
帅哥[离线]dourokinga 楼主
等级:实习生
帖子:12
被删:0
经验:56
RD币:7.3
来自:广东 茂名
注册:2010-6-9
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 15:42:025#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
出了问题
加了后提示
Can\'t read ../make/xxx/xxx.lis at createMoDIS.pl line 403.

因为我是没有源码的,所以也没有lis这文件
编辑 引用
等级:研发工程师
帖子:58
被删:-2
经验:398
RD币:34.8
来自:火星
注册:2007-6-5
发短信 | 资料 | 引用 | 回复 发表于2010-7-7 17:36:596#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
如果单独lib加入,你可以将此lib放在 Modis目录
工程\\MoDIS\\MoDIS_LIB\\  最深层有两个目录,不要放在NONE下。
模拟器连接应该从这个目录下加载所有lib库。
去掉CreateModis.ini中上述模块。


网络电视CMMB
在CreateModis.pl里面

# CMMB
@cmmb_libs = (
  "..\\\\vendor\\\\tdmb\\\\cyberlink\\\\lib\\\\pc\\\\LibCodecInterface.lib",
  "..\\\\vendor\\\\tdmb\\\\cyberlink\\\\lib\\\\pc\\\\SDL.lib");
if(defined($cmmb_support) && ($cmmb_support ne "NONE")) {
  push(@liblist, @cmmb_libs);
  foreach my $lib (@cmmb_libs) {
    warn "$lib does NOT exist!\\n" if (!-e $lib);
  }
}
模仿上述语句加入你自己的lib。
编辑 引用
帅哥[离线]dourokinga 楼主
等级:实习生
帖子:12
被删:0
经验:56
RD币:7.3
来自:广东 茂名
注册:2010-6-9
发短信 | 资料 | 引用 | 回复 发表于2010-7-8 14:30:577#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
谢谢aromar的耐心回答

我按照你的提示,将lib库复制到${modislibroot}中,pl文件里面定义的${modislibroot}应该就是你说的那个位置吧。
接着在pl里添加一句
push(@liblist, "${modislibroot}\\\\douapp\\.lib");
这里参考了其它${modislibroot}里的lib库的添加方法。
现在正在编译中应该没问题了吧。

不过在这之前,我尝试了另一种方法,就是用vc6给modis工程手动添加了lib库。也可以解决。

不过还有个疑问,就是我用vc6手动的lib是用vc6编译的。
如果是按照你的方法添加的库,是不是用arm编译的就行,还是要添加vc编译的库?
个人觉得还是得加vc编译的库,不知是否?
编辑 引用
帅哥[离线]dourokinga 楼主
等级:实习生
帖子:12
被删:0
经验:56
RD币:7.3
来自:广东 茂名
注册:2010-6-9
发短信 | 资料 | 引用 | 回复 发表于2010-7-8 15:58:318#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
编译结果
..\\..\\xxx.lib : fatal error LNK1113: invalid machine type
看来是要添加vc编译的lib了。

同时证明了aromar的方法,It work! 再次感谢!
编辑 引用
等级:高级工程师
帖子:265
被删:-2
经验:855
RD币:122.2
来自:上海 浦东
注册:2009-9-29
发短信 | 资料 | 引用 | 回复 发表于2010-7-9 18:48:059#
此页为旧版论坛,仅供浏览,请访问新版论坛:http://bbs.52rd.com/Thread-189450-1-1.html
arm
和modis的当然不一样。
liblist只是createmodis时所有要link的lib,vc根据这个添加lib。
编辑 引用