iOS Question third party lib questions

Ju Yang

Active Member
Licensed User
Longtime User
hello, I follow the tutorial and make a lib, when I use it in B4I, I got a build error:

Ld Payload/result.app/result normal armv7
cd /Users/administrator/Documents/UploadedProjects/<user id>
export IPHONEOS_DEPLOYMENT_TARGET=7.0
export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.1.sdk -L/Users/administrator/Documents/UploadedProjects/<user id>/Payload -L../../Libs -F/Users/administrator/Documents/UploadedProjects/<user id>/Payload -F../../Libs -filelist /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/armv7/result.LinkFileList -miphoneos-version-min=7.0 -ObjC -fobjc-arc -fobjc-link-runtime -lCore -framework Foundation -framework CoreGraphics -framework UIKit -liTableView -liMedia -liHttp -liJSON -liStringUtils -liBarcode -liHUD -liRandomAccessFile -lb4i_alipay -framework AVFoundation -lz -framework AlipaySDK -framework Foundation -framework QuartzCore -framework UIKit -framework CFNetwork -framework CoreGraphics -framework CoreMotion -framework CoreTelephony -framework CoreText -framework SystemConfiguration -lCore -lc++ -liDebug2 -Xlinker -dependency_info -Xlinker /Users/administrator/Documents/UploadedProjects/<user id>/build/B4iProject.build/Release-iphoneos/B4iProject.build/Objects-normal/armv7/result_dependency_info.dat -o /Users/administrator/Documents/UploadedProjects/<user id>/Payload/result.app/result
ld: library not found for -lb4i_alipay
clang: error: linker command failed with exit code 1 (use -v to see invocation)


I reference some issues and can't find the problem, did I make mistakes by create the lib or did I use it the wrong way? thanks very much

I'v checked the project in the object folder, the project contains the libb4i_alipay.a, but I got error above

I have done the following steps:
first, import the third party lib and it's depending framewrok, bundle into the project( including some .h/.m files and Util, openssl folders)
then I set the search path into the macserver/Libs folder, import iCore.h File ,and write code like this:

[[AlipaySDK defaultService] payOrder: orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
NSLog(@"reslut = %@",resultDic);
}];

then after generating a libb4i_alipay.lib , I use B4Ih2xml.jar and get a xml,
I put I into B4I project, but when I send It to server to builder the code , I get the error I first post

#import "iCore.h"

//~dependsOn:AlipaySDK.framework.3
//~dependson:Foundation.framework
//~dependson:QuartzCore.framework
//~dependson:UIKit.framework
//~dependson:CFNetwork.framework
//~dependson:CoreGraphics.framework
//~dependson:CoreMotion.framework
//~dependson:CoreTelephony.framework
//~dependson:CoreText.framework
//~dependson:SystemConfiguration.framework
//~dependson:libCore.dylib
//~dependson:libz.dylib
//~dependson:libc++.dylib
//~event: Finished
//~version:1.00
 
Last edited:

Ju Yang

Active Member
Licensed User
Longtime User
further more: I build the xproject under Object folder, and it says:

ld: warning: ignoring file ../../Libs/libb4i_alipay.a, file was built for archive which is not the architecture being linked (i386): ../../Libs/libb4i_alipay.a
Undefined symbols for architecture i386:
"_OBJC_CLASS_$_alipayWrapper", referenced from:
objc-class-ref in b4i_mepagecontroller.o
ld: symbol(s) not found for architecture i386
clang: error: linker comman
 
Upvote 0

Ju Yang

Active Member
Licensed User
Longtime User
I have checked the architecture of the lib, it says
: Architectures in the fat file: libb4i_alipay.a are: armv7 arm64
but It still shows the same error, I build the project under Object folder, it still gets the same error after I import the libs,

detail:
ld: warning: ignoring file ../../Libs/libb4i_alipay.a, missing required architecture i386 in file ../../Libs/libb4i_alipay.a (2 slices)

Undefined symbols for architecture i386:

"_OBJC_CLASS_$_alipayWrapper", referenced from:

objc-class-ref in b4i_mepagecontroller.o

ld: symbol(s) not found for architecture i386

confuse about that, did I ignore some settings?
 
Upvote 0

Ju Yang

Active Member
Licensed User
Longtime User
by the way , I can't find libCore.dylib to compile the project, does it matters?
 
Upvote 0

JanPRO

Well-Known Member
Licensed User
Longtime User
Later you will need to compile to armv7 and arm64 and use lipo to combine the three architectures to a single library.
Like Erel already said you have to use lipo to create a fat library.
Compile your Xcode project with the device SDK and the simulator SDK and then use the lipo command line tool to combine the lib files:
B4X:
lipo -create libDevice.a libSimulator.a -output libFat.a
 
Upvote 0

Ju Yang

Active Member
Licensed User
Longtime User
yes I have mixed it... thanks ,but I get another error,

Undefined symbols for architecture i386:

"_BIO_ctrl", referenced from:

_rsa_sign_with_private_key_pem in libb4i_alipay.a(openssl_wrapper.o)


an error from the depending lib's depend, what can I do?
 
Upvote 0

Ju Yang

Active Member
Licensed User
Longtime User
thanks, and I have done that, see above
 
Upvote 0

JanPRO

Well-Known Member
Licensed User
Longtime User
and I have done that
But probably you have done something wrong, because like you already said your library just includes armv7 and arm64 architecture
Architectures in the fat file: libb4i_alipay.a are: armv7 arm64

an error from the depending lib's depend, what can I do?
Check also the architecture of depending libs, if they don't include the i386 architecture you are also not able to use the final lib with the simulator ...
 
Upvote 0

Ju Yang

Active Member
Licensed User
Longtime User

..yes you are right , another problem? but I can't find it out with the error post by compiler? I can't find it out....crazy ing
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…