我正在尝试链接Xamarin的复杂的本机项目.这是Obj-C UI项目,它依赖于C库中的Native Obc-C包装(这是嵌入式项目):
我在Xcode中有本地源代码和测试项目,一切顺利.
然后我制作所有依赖项的胖库,将它们添加到xamarin绑定项目中.
在主要项目中,我必须为模拟器和设备设置gcc选项:
-vvvv -cxx --registrar:static -gcc_flags "-L${ProjectDir}/../RMSDKWrapper -dead_strip -lstdc++ -lstdc++.6.0.9 -lpthread -lsqlite3 -lxml2 -ObjC -ladept-iOS -lxml-iOS -lz -lcurl -lssl -lcrypto -ldp-iOS -lePub3-iOS -L/usr/lib -I/usr/include/libxml2"
一切都适用于模拟器,但是当我尝试为Device编译时,链接器不能链接lib,因为重复的符号.我使用’nm’检查了所有的libs,所有的对象都是模拟器和设备的.
我看到只有复制的对象是嵌入式包装器(rmsdk_wrapper2.xcodeproj)中的Obj-C类. nm发现包装器中的对象和从主机项目(TestRMSD.xcodeproj)的lib.但是对于模拟器来说,它解决了很好,对于设备来说都是很好的
UPD
XS版本:
https://gist.github.com/ad1Dima/eb1cc390930e191a5454260da2410c91
建立日志:
https://gist.github.com/ad1Dima/8ea8c4a271ef63efb310252234b32ae5
我需要知道如何解决这个问题.
解决方法
这个错误的可能原因:
>同一本地图书馆包含两次.
>两个不同的本机库碰巧定义相同的符号.
>本机库未正确构建,并且不止一次包含相同的符号.
您可以在这里找到链接错误的故障排除步骤:https://developer.xamarin.com/guides/ios/troubleshooting/mtouch-errors/#MT5212