编程技术记录

世界你好!

本文demo

构造了这样的场景:
有两个动态库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

© Beli. All Rights Reserved.