![]() ![]() 等级:实习生 帖子:12 被删:0 经验:56 RD币:7.3 来自:广东 茂名 注册:2010-6-9 |
我要为我的项目添加一个新模块,没有源码,只有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] |
| 编辑 引用 |
![]() ![]() 等级:实习生 帖子:12 被删:0 经验:56 RD币:7.3 来自:广东 茂名 注册:2010-6-9 |
出了问题
加了后提示 Can\'t read ../make/xxx/xxx.lis at createMoDIS.pl line 403. 因为我是没有源码的,所以也没有lis这文件 |
| 编辑 引用 |
![]() ![]() 等级:研发工程师 帖子:58 被删:-2 经验:398 RD币:34.8 来自:火星 注册:2007-6-5 |
如果单独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。 |
| 编辑 引用 |
![]() ![]() 等级:实习生 帖子:12 被删:0 经验:56 RD币:7.3 来自:广东 茂名 注册:2010-6-9 |
谢谢aromar的耐心回答
我按照你的提示,将lib库复制到${modislibroot}中,pl文件里面定义的${modislibroot}应该就是你说的那个位置吧。 接着在pl里添加一句 push(@liblist, "${modislibroot}\\\\douapp\\.lib"); 这里参考了其它${modislibroot}里的lib库的添加方法。 现在正在编译中应该没问题了吧。 不过在这之前,我尝试了另一种方法,就是用vc6给modis工程手动添加了lib库。也可以解决。 不过还有个疑问,就是我用vc6手动的lib是用vc6编译的。 如果是按照你的方法添加的库,是不是用arm编译的就行,还是要添加vc编译的库? 个人觉得还是得加vc编译的库,不知是否? |
| 编辑 引用 |
![]() ![]() 等级:实习生 帖子:12 被删:0 经验:56 RD币:7.3 来自:广东 茂名 注册:2010-6-9 |
编译结果
..\\..\\xxx.lib : fatal error LNK1113: invalid machine type 看来是要添加vc编译的lib了。 同时证明了aromar的方法,It work! 再次感谢! |
| 编辑 引用 |