c++ - iOS 框架。具有相同名称的模板函数,链接器选择错误的函数?
问题描述
我有一个带有两个框架的简单 iOS 应用程序。每个框架都有一个公共函数,它从私有模板函数返回一个特定的值。当应用程序从框架调用公共函数时 - 我希望获得那些不同的特定值,但每个框架都从第一个嵌入式框架调用相同的模板函数!
framework01
testFramework01.h
int framework01_Func(); // public function, calls private template function "func"
common.h
template<typename T> int func(T & data) // private template function, returns "11"
framework02
testFramework02.h
int framework02_Func(); // public function, calls private template function "func"
common.h
template<typename T> int func(T & data) // private template function, returns "22"
App
int n1 = framework01_Func(); // expecting to get "11", got "11"
int n2 = framework02_Func(); // expecting to get "22", but got "11"
当我从私有函数中删除“模板”状态时 - 一切都开始按预期工作。
谁能解释一下——为什么每个框架都不能使用自己的私有函数?有没有办法在每个框架中保留自己的功能(任何链接器标志或其他东西)?
作为奖励 - 每个框架都有一个同名的全局变量,并且在构建应用程序时没有“多个符号”错误,因此框架嵌入与静态链接不同 Windows 和 DLL 中没有此类问题(数据存储在自己的地址空间)。iOS 框架的工作方式不同吗?
源项目在这里:https ://github.com/iamlosthere/iOSFrameworksWithSameFunctionName
谢谢。
解决方案
推荐阅读
- sql-server - 如何减少 SQL Server 中的高页面读取/秒?
- cypress - 如何将 HTML 标记与 Cypress 中的符号进行比较
- java - 是否可以有特定于端点的自定义 JSON 序列化器?
- reactjs - 我可以在前端使用 JSDom 来解析 html
- python - 打印多行字符串,水平堆叠和对齐
- java - 如何以一定的间隔运行提交的任务一定次数
- typescript - 为 req.body 节点/express 后端定义 Typescript 类型
- node.js - 完成 writeStream 时出现“回调不是函数”错误
- python - Pandas 相当于 R dcast
- math - 索引到“分数表”并返回