构造了这样的场景:
有两个动态库framework,DA和DB,DA定义了函数func,DB定义了函数func,两个func的名字一样,但是内部实现不一样,然后使用App加载这两个动态库,结果运行时func的调用和预期的不一致。
- 动态库DA
// func.h
const char * func(void);
const char * func_a(void);
// func.c
#include "func.h"
const char * func(void)
{
return "i m da func\n";
}
const char * func_a(void)
{
return "i m da func_a\n";
}
- 动态库DB
// func.h
const char * func(void);
const char * func_b(void);
// func.c
#include "func.h"
const char * func(void)
{
return "i m db func\n";
}
const char * func_a(void)
{
return "i m db func_b\n";
}
- App 集成
//Appdelegate.m
#import "AppDelegate.h"
#import
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
printf("%s",func()); //预期打印 i m da func
printf("%s",func_a());
return YES;
}
//ViewController.m
#import "ViewController.h"
#import
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
printf("%s",func());//预期打印 i m db func
printf("%s",func_b());
}
@end
- 实测
i m db func i m da func_a i m db func i m db func_b