Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Duplicate symbol error on iOS #2

Open
Th3L0x opened this issue Dec 14, 2024 · 7 comments
Open

Duplicate symbol error on iOS #2

Th3L0x opened this issue Dec 14, 2024 · 7 comments

Comments

@Th3L0x
Copy link

Th3L0x commented Dec 14, 2024

/usr/local/share/dotnet/packs/Microsoft.iOS.Sdk.net9.0_18.0/18.0.9617/targets/Xamarin.Shared.Sdk.targets(1663,3): error :
clang++ exited with code 1:
duplicate symbol 'OBJC_IVAR$_Rect2d.native' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1499
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1041
duplicate symbol 'OBJC_IVAR$_MinMaxLocResult._minLoc' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon[1491](MinMaxLocResu
lt.o)
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1033
duplicate symbol 'OBJC_CLASS$_Size2i' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1506
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1048
duplicate symbol 'OBJC_CLASS$_Converters' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1461
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1003
duplicate symbol 'OBJC_CLASS$_RotatedRect' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1502
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1044
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1150
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]315
duplicate symbol 'OBJC_METACLASS$_MatOfRect2d' in:
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1488
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]1030
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1150
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]315
/Users/martinbozso/.nuget/packages/mediapipetaskscommon.ios/0.10.18/lib/net8.0-ios18.0/MediaPipeTasksCommon.resour
ces/MediaPipeTasksCommon.xcframework/ios-arm64/MediaPipeTasksCommon.framework/MediaPipeTasksCommon1150
/Users/martinbozso/.nuget/packages/opencvsdk.ios/4.10.0.1/lib/net8.0-ios17.5/OpenCvSdk.iOS.resources/opencv2.frame
work/opencv2[arm64]315
duplicate symbol 'OBJC_CLASS$_MatOfRect2d' in

  This is my csproj:
      
 <ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
	<PackageReference Include="TensorFlowLite.iOS" Version="2.17.0" />
  	<PackageReference Include="MediaPipeTasksVision.iOS" Version="0.10.18" />
       <PackageReference Include="MediaPipeTasksCommon.iOS" Version="0.10.18" />
	<PackageReference Include="OpenCvSdk.iOS" Version="4.10.0.1" />
  </ItemGroup>

Looks like MediaPipe uses opencv?
If I remove OpenCvSdk.iOS the it builds correctly.

@Th3L0x
Copy link
Author

Th3L0x commented Dec 14, 2024

found this on github:
google-ai-edge/mediapipe#5125

@v-hogood
Copy link
Owner

It seems like MediaPipe is broken in that it includes a partial OpenCV, preventing anyone who needs a full-featured OpenCV from linking it. But if MediaPipe includes enough OpenCV for your project and you don't need to link full OpenCV then great. Feel free to reopen if not thanks.

@v-hogood v-hogood reopened this Dec 15, 2024
@Th3L0x
Copy link
Author

Th3L0x commented Dec 16, 2024

Thank you, for reopening the issue.
Related problem: #3 (comment)

@Th3L0x
Copy link
Author

Th3L0x commented Dec 17, 2024

I tried to play with the linker flag options and smartlinking true/false like:

<LinkerFlags>-ObjC -u _OBJC_CLASS_$_Rect2d -u _OBJC_CLASS_$_Size2i -u _OBJC_CLASS_$_Converters -u _OBJC_CLASS_$_RotatedRect</LinkerFlags>

or

<LinkerFlags>-force_load MediaPipeTasksCommon.framework/MediaPipeTasksCommon</LinkerFlags>

but unfortunately the same result :/

@Th3L0x
Copy link
Author

Th3L0x commented Jan 8, 2025

Hi, I was wondering if there have been any recent updates on this. If there’s anything I can do to assist or contribute, please let me know.

@v-hogood
Copy link
Owner

MediaPipe has a couple of issues: it doesn't support 16 KB page sizes (google-ai-edge/mediapipe#5728) and it can't be used with OpenCV on iOS because symbols conflict (google-ai-edge/mediapipe#5145).
I will look at those next but you might want to stick to TensorFlowLite Tasks for now.

@v-hogood
Copy link
Owner

Reported the issue here: google-ai-edge/mediapipe#5834

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants