As Victor Ronin pointed out, "dlsym" is for C symbols. To obtain objective-C class from dylib that you linked at runtime you can use objc runtime functions. In your case:
void* dylibLink = dlopen("/usr/lib/libKDylibTwo.dylib", RTLD_NOW);
id KDylibTwo = [[objc_getClass("KDylibTwo") alloc] init];
[KDylibTwo run];
First line is linking your library at runtime. This is required in order to use code inside of it.
Second line creates instance of class KDylibTwo
. objc_getClass
function returns class object that you can later use to create instances of this class like you would with any objective-C class - using alloc
and init
methods. Once you obtained class object with objc_getClass
you can work with him like nothing happend. At this point you can forget that you dynamically linked you library at runtime.
Third line is calling run
method. As you can see, it's normal objective-C syntax. Nothing is changed because you linked your library at runtime. You can call any method you want.