我们用三星的210芯片,摄像头用的OV3640,为啥编译BSP里,把OV3640的驱动增加到模块里,就会出现
C/C++ code? BUILD: [Thrd:Sequence:Type ] Message BUILD: [01:0000006348:ERRORE] camera_hal.lib(module_interface.obj) : error LNK2019: unresolved external symbol "public: __cdecl OV3640::OV3640(void)" (??0OV3640@@QAA@XZ) referenced in function ModuleInit BUILD: [01:0000006349:ERRORE] C:\WINCE600\platform\SMDKV210 \target\ARMV4I\retail\CAMDriver.dll : fatal error LNK1120: 1 unresolved externals
的错误呢。
我们修改的代码是,module_interface.cpp 文件里的ModuleInit函数中的毕业论文 :
if(!vModuleInit[g_selectedModule] && !vCamModule[g_selectedModule]) { switch(g_selectedModule) { /* case SYSLSI_S5K6AAFX: vCamModule[g_selectedModule] = new S5K6AAFX(); break; case SYSLSI_S5K4EAGX: vCamModule[g_selectedModule] = new S5K4EAGX(); break; case SYSLSI_S5K3BA: vCamModule[g_selectedModule] = new S5K3BA(); break; case NEC_CE143: vCamModule[g_selectedModule] = new CE143(); break; */ //原代码中,3640的这段是注释掉的,放开后就出现上面的那个错误 case SYSLSI_OV3640: vCamModule[g_selectedModule] = new OV3640(); break; case SYSLSI_TVP5150: vCamModule[g_selectedModule] = new TVP5150(); break; default: vCamModule[g_selectedModule]=NULL; Ret=FALSE; } }
camera_pdd 下的引用要改!
CDEFINES=$(CDEFINES) -DCAMERA_PORT=CAM_A_PORT
CDEFINES=$(CDEFINES) -DCAMERA_MODULE_NAME=SYSLSI_ov5640
!if 0
CDEFINES=$(CDEFINES) -DCAMERA_PORT=CAM_B_PORT
CDEFINES=$(CDEFINES) -DCAMERA_MODULE_NAME=SYSLSI_S5K3BA
!endif
要将原来的去掉,加上你的才行.