防止Linux库so中的接口冲突

使用vs编译so库,很多复用的cpp文件在不同的so中,调用这些so的时候会有崩溃等等各种问题,就是因为虽然复用了接口,但是内部实现不完全相同,而Linux使用接口又与windows不一样,导致不是理想状态使用自己库中的函数接口,一个简单的解决办法,使用显示指定接口:-Wl,--retain-symbols-file=/home/projects/$(ProjectName)/retain_symbols.sys -Wl,--version-script=/home/projects/$(ProjectName)/version_script.map,这两个文件里的内容也很简单,

retain_symbols.sys:

Test_api1
Test_api2

version_script.map:

{  
global:Test_api1;Test_api2;
local: *;  
}; 

基本这样就可以解决问题了,不用去挨个改接口名字了。

还有一种是用-fvisibility=hidden的方式,在代码级别就做出变动,我还没有尝试过。

更新,还有一个办法,是研究android studio编译库冲突时发现的,使用-Wl,-Bsymbolic参数,限定库优先使用内部函数,在ld报错时查找到的:http://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html ld的参数说明,也是看了这个参数说明才知道,上面的指定函数接口的参数与-s、-S(strip)的使用是冲突的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】数据处理:从SQL批量删除报错到Python优雅解决

一、背景 MySQL数据库表中有一批重复的脏数据,为不影响正常业务,需要进行批量删除。 二、SQL批量删除 首先想到的是编写SQL语句来批量删除:删除身份证号为51****59且ID不为5的全部数据(保留ID为5的那一条数据) DELETE FROM test_table WHERE id IN ( SELECT i…

Beego 学习笔记9:Boostrap使用介绍

BootStrap布局 1> 下载地址: http://v3.bootcss.com/getting-started/#download 根据自己的需要,下载不同的版本。我这里使用的是1版本的。比较简单好用。 2> Bootstrap常用的布局样式介绍 1->布局容器(.container和.container-fluid&a…

windows的\r\n与Linux的\n

为了去除平台差异,需要将数据直接在Linux下保存,不在windows中进行转换,于是对\r\n和\n、\r有了新的认识,由于这部分数据保存的代码是其他两个同事约定好了格式的,windows保存的txt文件中使用了“\r\n”作为结束&#…

名人论数学——数学的本质

来源:算法与数学之美罗巴切夫斯基任何一门数学分支,不管它如何抽象,总有一天会在现实世界中找到应用.罗巴切夫斯基(Н.И.лобачевский,1792~1856,俄国数学家)是非欧几何的创始人之一&#xff0c…

c++ 编译报错

no match for ‘operator’ (operand types are ‘std::shared_ptr<float>’ and ‘std::unique_ptr<float []>’ 在有一部分平台编译时&#xff0c;返回值是unique_ptr&#xff0c;接收的是shared_ptr是可以编译使用的&#xff0c;但是在一个arm64的平台上直接编…

javascript的性能优化

(1) 如何加载JS&#xff0c;JS文件应放在什么位置 外部JS的阻塞下载 所有浏览器在下载JS的时候&#xff0c;会阻止一切其他活动&#xff0c;比如其他资源的下载&#xff0c;内容的呈现等等。至到JS下载、解析、执行完毕后才开始继续并行下载其他资源并呈现内容。 有人…

把握芯片科技发展趋势 促进半导体产业创新突破

来源&#xff1a;学习时报作者&#xff1a;李万芯片是信息社会的核心基石&#xff0c;也是各国竞相发展的重要新兴技术和产业。在某种程度上&#xff0c;一个国家的芯片科技水平以及在全球分工位置&#xff0c;意味着该国在全球科技竞争中的地位。芯片科技发展的基本特质芯片科…

json.hpp参数错误

报错&#xff1a;json.hpp:6057:62: error: wrong number of template arguments (1, should be 2) json.hpp版本为2.1.1&#xff0c;更新了版本3.0.0&#xff0c;问题解决&#xff08;没有更新到最新是担心改动太多不兼容。。。。也许并没有什么问题&#xff09;

宇宙是一个无始无终的循环?

图片来源&#xff1a;Samuel Velasco/Quanta Magazine最近&#xff0c;科学家通过复杂的计算机模拟发现&#xff0c;除了宇宙暴胀&#xff0c;宇宙收缩同样可以创造出今天我们所见宇宙的种种特征。并且在循环宇宙中&#xff0c;膨胀和收缩会交替进行。在这个理论中&#xff0c;…

在VMware中装Win server 2012配置Hyper-v

找到虚拟机存放位置&#xff0c;找到Windows Server 2012.vmx 用记事本打卡&#xff0c;在文本最后添加以下两行并保存 hypervisor.cpuid.v0 "FALSE" mce.enable "TRUE" 在虚拟机里设置里勾选处理器的虚拟化Intel VT-x/EPT或AMD-V/RVI(V) 转载于:https:/…

matlab 设置背景透明

set(gca,color,none); 使用以上命令就可以将当前选定的figure背景设置为透明 点击edit plot后可以右键选择copy&#xff0c;叠加到其他figure中去

Nature:“巨型原子”使芯片同时处理和收发量子信息成为可能

图片来源&#xff1a;Pixabay文章来源&#xff1a;麻省理工学院━━━━麻省理工学院&#xff08;MIT&#xff09;的研究人员介绍了一种量子计算架构&#xff0c;它可以执行低错误的量子计算&#xff0c;同时在处理器之间快速共享量子信息。这项工作代表了迈向完整量子计算平台…

0基础lua学习(二十)Lua单例

代码如下&#xff1a; local GameLogic {}function GameLogic:new(o) o o or {} setmetatable(o,self) self.__index self return o end function GameLogic:Instance() if self.instance nil then self.instance self:new() end print(self.instance)return s…

大脑认知能力获突破进展!《科学》发现促进大脑发育期间的关键细胞器

本文来源于公众号&#xff1a;生物谷&#xff0c;作者T.Shen作为在10亿年前细胞中不断进化的小型细胞器&#xff0c;线粒体或许对于人类进化做出了巨大贡献&#xff0c;尤其是对于需要能量维持正常功能的大脑。8月14日&#xff0c;一项刊登在国际杂志Science上的研究报告中&…

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

遇到这个问题&#xff0c;因为在文件中写入中文&#xff0c;目前的做法是open时指定encoding为utf-8&#xff0c;问题解决。 修改文件名为中文也有类似问题&#xff0c;原因是系统默认不支持中文。

人工智能背后的数学

本文来自王宏琳科学网博客计算机会“思维”、Agent&#xff08;智能体&#xff09;能感知环境、机器可从经验中学习&#xff0c;其背后离不开数学——从线性代数、概率统计到拓扑学众多数学分支。这篇读书札记讨论人工智能背后的数学。【人工智能离不开数学】术语“人工智能&am…

iBeacon硬件厂商和产品

调研这种事情&#xff0c;没有难度却费时费力&#xff0c;所以共享一点对iBeacon的调研结果&#xff0c;减轻需要相关信息的小伙伴的精力消耗。 这几天因为项目需要采购为数不小的iBeacon&#xff0c;所以花了点时间对市面上主要的iBeacon简单的调研总结了一下。后续还会采购其…

VS2017编译的一些小知识记录

1. VS2017有文件夹视图功能&#xff0c;这个使用的大家都可以找到&#xff0c;使用这个功能可以通过CMakeList.txt和CMakeSettings.json来编译c&#xff0c;但是很多时候会出现&#xff1a;C IntelliSense信息可能过时&#xff0c;生成要刷新的CMake缓存&#xff0c;这样的提示…

Tomcat和Weblogic部署纯html文件

1、首先纯html文件&#xff0c;得有一个入口 index.html 2、Tomcat是不需要指定web.xml的&#xff0c;因为即使你的文件里没有web.xml&#xff0c;也会读取conf 目录下的web.xml&#xff0c;在这个文件里边指定了index.html的入口 Tomcat的话只要将原文件部署到 webapps\ 目录下…

c#调用c++的dll接口

如果有参数是unsinged char*&#xff0c;c#对应&#xff1a; 可以是&#xff1a;ref byte&#xff0c;如果传出单个unsinged char的话。 或者&#xff1a;byte[]&#xff0c;如果传入一个缓冲区的话。 或者&#xff1a;string&#xff0c;如果传入一个字符串。 对于其他参数&…