'Export functions in Xcode Framework dylib
I wanted to export some functions in a framework and performed a comparison between a dylib created from Xcode Framework and a dylib created using clang and I used similar code in both files.
#define EXPORT __attribute__((visibility("default")))
//! Project version number for importdylib2.
FOUNDATION_EXPORT double importdylib2VersionNumber;
//! Project version string for importdylib2.
FOUNDATION_EXPORT const unsigned char importdylib2VersionString[];
void importdylib();
void exitimport();
//Initializer
__attribute__((constructor))
static void initializer(void)
{
importdylib();
}
//Finalizer
__attribute__((destructor))
static void finalizer(void)
{
exitimport();
}
EXPORT
void importdylib()
{
//some code
}
EXPORT
void exitimport()
{
//some code
}
However, when I load the binaries in Ghidra, I saw that the dylib created by Xcode archive process did not contain any of my exported functions but the dylib created from clang contain the expected functions.
Xcode Framework dylib
The Exports did not contain my exported functions and the list of Functions is empty.
Exports
- _importdylib2VersionNumber
- _importdylib2VersionString
Dylib compiled from clang
I can see the various functions, including exported functions.
Exports
- _exitimport
- _importdylib
Functions
- ___GLOBAL_init_65535
- _exitimport
- _finalizer
- _importdylib
- _initializer
What settings do I need to configure in Xcode to export functions in a framework?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
