In a project utilizing both Swift and Objective-C, we encountered issues when integrating the libPhoneNumber library via Swift Package Manager. Specifically, after importing libPhoneNumber in Objective-C files, the build process resulted in the following duplicate symbol errors:
duplicate symbol '_kPhoneNumberMetaDataExpandedLength'
duplicate symbol '_kPhoneNumberMetaDataCompressedLength'
duplicate symbol '_kPhoneNumberMetaData'
These errors prevented successful compilation and needed to be addressed to ensure smooth integration and functionality.
Resolution
To resolve these symbol duplication errors, we have modified the GeneratePhoneNumberHeader.sh script. The script update involves adjusting the global variables declared in NBGeneratedPhoneNumberMetaData.h to be treated as external (extern). This change ensures that these variables are linked appropriately across different compilation units, thereby eliminating the duplication issues and allowing the build process to complete successfully.
This update is crucial for maintaining build integrity and enabling seamless integration of libPhoneNumber within our mixed Swift and Objective-C codebase.
In a project utilizing both Swift and Objective-C, we encountered issues when integrating the libPhoneNumber library via Swift Package Manager. Specifically, after importing libPhoneNumber in Objective-C files, the build process resulted in the following duplicate symbol errors:
These errors prevented successful compilation and needed to be addressed to ensure smooth integration and functionality.
Resolution To resolve these symbol duplication errors, we have modified the GeneratePhoneNumberHeader.sh script. The script update involves adjusting the global variables declared in NBGeneratedPhoneNumberMetaData.h to be treated as external (extern). This change ensures that these variables are linked appropriately across different compilation units, thereby eliminating the duplication issues and allowing the build process to complete successfully.
This update is crucial for maintaining build integrity and enabling seamless integration of libPhoneNumber within our mixed Swift and Objective-C codebase.