Well, at last I got it working.. For anyone who encounters this in the future..
Rename the main.m file to main.mm.
ZXing's README states why we need this
It can happen that when trying to build your own project with ZXingWidgetController you get linker errors like "undefined reference to". If this error looks like a c++ undefined reference, then renaming main.m into main.mm (Objective-C++ source suffix) may fix the problem
Rename the file (ViewController/View) which uses ZXing libray functions so that it also has .mm extension.
Check architecture settings across project. Give architecture and valid architecture as armv7 armv7s in your project settings, target settings, and ZXing project (which you added to your main project) and target settings.
In main project -> Build Settings scroll and find out the options, C++ Language Dialect and C++ Standard Library. Select options "Compiler Default" for both of them. (This is the step I missed, It is needed because newest XCode template has compiler default settings different to what they were in older versions).
You also might have to set ZXingWidget's "Build Valid Architecture Only" flag set as NO. In my case, this field was already NO
These fixed the issue for me..
Rename the main.m file to main.mm.
ZXing's README states why we need this
It can happen that when trying to build your own project with ZXingWidgetController you get linker errors like "undefined reference to". If this error looks like a c++ undefined reference, then renaming main.m into main.mm (Objective-C++ source suffix) may fix the problem
Rename the file (ViewController/View) which uses ZXing libray functions so that it also has .mm extension.
Check architecture settings across project. Give architecture and valid architecture as armv7 armv7s in your project settings, target settings, and ZXing project (which you added to your main project) and target settings.
In main project -> Build Settings scroll and find out the options, C++ Language Dialect and C++ Standard Library. Select options "Compiler Default" for both of them. (This is the step I missed, It is needed because newest XCode template has compiler default settings different to what they were in older versions).
You also might have to set ZXingWidget's "Build Valid Architecture Only" flag set as NO. In my case, this field was already NO
These fixed the issue for me..